{"_id":"@0xkobold/pi-obsidian-bridge","name":"@0xkobold/pi-obsidian-bridge","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@0xkobold/pi-obsidian-bridge","version":"0.1.0","description":"Obsidian vault integration for pi-coding-agent","icon":"📓","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","pi":{"extensions":["./dist/index.js"]},"scripts":{"build":"tsc","test":"bun test","prepublishOnly":"npm run build"},"keywords":["pi-extension","obsidian","vault","tasks","notes","knowledge-base"],"author":{"name":"0xKobold"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/0xKobold/pi-obsidian-bridge.git"},"bugs":{"url":"https://github.com/0xKobold/pi-obsidian-bridge/issues"},"homepage":"https://github.com/0xKobold/pi-obsidian-bridge#readme","peerDependencies":{"@sinclair/typebox":">=0.32.0","@mariozechner/pi-coding-agent":">=0.57.0"},"devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"engines":{"bun":">=1.0.0"},"gitHead":"ec57400e2a29794a471aa008c2c5ef47c89fd6f0","_id":"@0xkobold/pi-obsidian-bridge@0.1.0","_nodeVersion":"25.1.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-oopXdQdfm0O9th9JfD+CxomOefQ+FYnrgLU/pyDzoOsGiPPAvNe+PXgH9jb3bPAiusDAhDte1vmjQc88V0Y00Q==","shasum":"1f41e2b269a83b2adf833dbaa8720a26d8639303","tarball":"https://registry.npmjs.org/@0xkobold/pi-obsidian-bridge/-/pi-obsidian-bridge-0.1.0.tgz","fileCount":6,"unpackedSize":33061,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCxF4fh2AfqlxOF+asCyjgaE7s71lR8R+4DUUYuCtzW0wIgWMdw1ApXT3BjCGtfgGyZWa+gtgjx6UGc0/8f7f/n18U="}]},"_npmUser":{"name":"moikapy","email":"warrenckhan@gmail.com"},"directories":{},"maintainers":[{"name":"moikapy","email":"warrenckhan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-obsidian-bridge_0.1.0_1773366504187_0.7872816304497123"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-13T01:48:24.107Z","0.1.0":"2026-03-13T01:48:24.328Z","modified":"2026-03-13T01:48:24.547Z"},"maintainers":[{"name":"moikapy","email":"warrenckhan@gmail.com"}],"description":"Obsidian vault integration for pi-coding-agent","homepage":"https://github.com/0xKobold/pi-obsidian-bridge#readme","keywords":["pi-extension","obsidian","vault","tasks","notes","knowledge-base"],"repository":{"type":"git","url":"git+https://github.com/0xKobold/pi-obsidian-bridge.git"},"author":{"name":"0xKobold"},"bugs":{"url":"https://github.com/0xKobold/pi-obsidian-bridge/issues"},"license":"MIT","readme":"# 📓 Pi Obsidian Bridge\n\nObsidian vault integration for [pi-coding-agent](https://github.com/marioechler/pi-coding-agent).\n\nProvides bidirectional sync between Obsidian vault tasks and your agent.\n\n## Features\n\n- 🏷️ **Tag-based discovery** - Finds tasks tagged `#kobold`\n- 🔁 **Bidirectional sync** - Marks tasks complete back to Obsidian\n- 📁 **Auto-vault creation** - Creates vault structure if not exists\n- 🎯 **Standalone** - Works without 0xKobold framework\n- 🔌 **Integrable** - Exposes bridge for scheduler integration\n\n## Installation\n\n```bash\n# Via pi CLI\npi install npm:@0xkobold/pi-obsidian-bridge\n\n# Or in pi-config.ts\nextensions: ['npm:@0xkobold/pi-obsidian-bridge']\n```\n\n## Configuration\n\n**Environment Variables:**\n```bash\nPI_OBSIDIAN_VAULT=~/.0xkobold/obsidian_vault  # Vault path (auto-created if not exists)\nPI_OBSIDIAN_STORAGE=~/.0xkobold              # State storage\nPI_OBSIDIAN_ENABLED=true                     # Enable/disable\nPI_OBSIDIAN_TASKS_FILE=10-Action/Tasks.md  # Tasks file path\n```\n\n## Usage\n\n### Standalone\n\n```typescript\nimport { ObsidianBridge } from '@0xkobold/pi-obsidian-bridge';\n\nconst bridge = new ObsidianBridge({\n  enabled: true,\n  vaultPath: './my-vault',\n  tasksFilePath: '10-Action/Tasks.md',\n  storagePath: './.bridge-state',\n});\n\nawait bridge.init();\n\n// Poll for tasks\nconst tasks = await bridge.pollForTasks();\nconsole.log(`Found ${tasks.length} tasks`);\n\n// Get pending tasks\nconst pending = await bridge.getPendingTasks();\n\n// Complete a task\nawait bridge.completeTask(tasks[0].id);\n```\n\n### With pi-coding-agent\n\n```typescript\n// Extension auto-registers tools:\n// /obsidian_poll  - Poll for #kobold tasks\n// /obsidian_tasks - List pending tasks  \n// /obsidian_done  - Mark task complete\n// /obsidian_status - Show bridge status\n\n// Access bridge programmatically:\nconst bridge = (pi as any).obsidianBridge;\n\n// Integrate with your scheduler\nmyScheduler.on('tick', () => {\n  bridge.pollForTasks();\n});\n```\n\n### With 0xKobold Heartbeat\n\nIn your Heartbeat.md, add:\n```markdown\n## Obsidian Integration\n\nThe Obsidian Bridge is available at runtime:\n\n```typescript\nconst bridge = (pi as any).obsidianBridge;\nif (bridge) {\n  await bridge.pollForTasks();\n}\n```\n```\n\n## Vault Structure\n\nAuto-created at `PI_OBSIDIAN_VAULT`:\n\n```\nobsidian_vault/\n├── .obsidian/          # Config\n├── 00-Inbox/          # New notes\n├── 01-Projects/       # Projects\n├── 10-Action/\n│   └── Tasks.md       # #kobold tasks here\n└── 90-Archive/        # Completed\n```\n\n## Task Format\n\nIn `10-Action/Tasks.md`:\n```markdown\n## Active\n\n- [ ] Review code #kobold\n- [ ] Deploy feature #kobold #urgent\n\n## Archive\n```\n\n## API\n\n### `ObsidianBridge`\n\n| Method | Description |\n|--------|-------------|\n| `init()` | Initialize vault |\n| `pollForTasks()` | Scan for #kobold tasks |\n| `getPendingTasks()` | Get pending list |\n| `markInProgress(id)` | Mark task active |\n| `completeTask(id)` | Mark complete in Obsidian |\n| `getStatus()` | Get bridge status |\n\n## Standalone Example\n\n```typescript\n// minimal.ts - No pi-coding-agent needed\nimport { ObsidianBridge } from '@0xkobold/pi-obsidian-bridge';\n\nconst bridge = new ObsidianBridge({\n  enabled: true,\n  vaultPath: './vault',\n  tasksFilePath: 'Tasks.md',\n  storagePath: './.state',\n});\n\nawait bridge.init();\nsetInterval(() => bridge.pollForTasks(), 60000);\n```\n\n## Links\n\n- [GitHub](https://github.com/0xKobold/pi-obsidian-bridge)\n- [Obsidian](https://obsidian.md)\n\n## License\n\nMIT","readmeFilename":"README.md","_rev":"1-2cb4ff418ef1b7bd742fdce708a78b3a"}