@xopcai/xopc 0.0.100 → 0.0.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  4. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
  5. package/dist/extensions/telegram/src/inbound-processor.js +1 -1
  6. package/dist/extensions/telegram/src/plugin.js +1 -1
  7. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  8. package/dist/extensions/telegram/src/update-offset-store.js +1 -1
  9. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  10. package/dist/extensions/telegram/xopc.extension.json +1 -1
  11. package/dist/extensions/weixin/src/api/api.js +7 -5
  12. package/dist/extensions/weixin/src/api/api.js.map +1 -1
  13. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  14. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  15. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  16. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  17. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  18. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  19. package/dist/extensions/weixin/src/plugin.js +1 -1
  20. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  21. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  22. package/dist/gateway/static/root/assets/{agents-C5jtBK-H.js → agents-DQ0mQxIA.js} +2 -2
  23. package/dist/gateway/static/root/assets/{apps-page-smJl-qf_.js → apps-page-Uv4kOmDE.js} +1 -1
  24. package/dist/gateway/static/root/assets/{attachment-preview-renderer-DBAxQXb-.js → attachment-preview-renderer-CybMSIoS.js} +2 -2
  25. package/dist/gateway/static/root/assets/{attachment-process-heavy-Csq3TrrP.js → attachment-process-heavy-RnGYy9bC.js} +2 -2
  26. package/dist/gateway/static/root/assets/{channels-settings-CH6KgFK6.js → channels-settings-BEtP53V6.js} +1 -1
  27. package/dist/gateway/static/root/assets/{channels-status-swr-CV70xvY7.js → channels-status-swr-CxTtS1hI.js} +1 -1
  28. package/dist/gateway/static/root/assets/{cron-api-CgBO8B7I.js → cron-api-CznlPIZT.js} +1 -1
  29. package/dist/gateway/static/root/assets/{cron-page-Be0cW1cR.js → cron-page-Dx6dE3eD.js} +1 -1
  30. package/dist/gateway/static/root/assets/{dist-P8HRGUuh.js → dist-DH4IuRV0.js} +1 -1
  31. package/dist/gateway/static/root/assets/{docx-preview-Dxj1EkCO.js → docx-preview-CajIk2FR.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-BowuycYu.js → extension-debug-page-BNkhvRQW.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-27-Zpv8O.js → extension-page-CcIGQah2.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-settings-page-DDFa_rIq.js → extension-settings-page-DuDCSb3J.js} +1 -1
  35. package/dist/gateway/static/root/assets/{field-primitives-BWLssxEb.js → field-primitives-BUwUiDf5.js} +1 -1
  36. package/dist/gateway/static/root/assets/{heartbeat-config-api-BVuYNYT_.js → heartbeat-config-api-BjFW1cl-.js} +1 -1
  37. package/dist/gateway/static/root/assets/{index-CRDAmr3W.js → index-DKgHC1Ta.js} +9 -9
  38. package/dist/gateway/static/root/assets/{logs-page-BDX8IrDQ.js → logs-page-CiG0m81R.js} +1 -1
  39. package/dist/gateway/static/root/assets/{note-detail-page-BmQ9KeiA.js → note-detail-page-DG3DVFTf.js} +2 -2
  40. package/dist/gateway/static/root/assets/{note-time-14I9Sgqh.js → note-time-DjlllCF3.js} +1 -1
  41. package/dist/gateway/static/root/assets/{notes-page-BMfP0FFf.js → notes-page-D40ZpS0Y.js} +1 -1
  42. package/dist/gateway/static/root/assets/{sessions-page-C3scyChq.js → sessions-page-BvtdbmW8.js} +1 -1
  43. package/dist/gateway/static/root/assets/{settings-advanced-gate-2ODuCjHP.js → settings-advanced-gate-BQamRjkV.js} +2 -2
  44. package/dist/gateway/static/root/assets/{settings-form-section-DUoGKAiW.js → settings-form-section-C3_sEFfD.js} +1 -1
  45. package/dist/gateway/static/root/assets/{settings-page-CttAfOWV.js → settings-page-D972_jaS.js} +2 -2
  46. package/dist/gateway/static/root/assets/{share-preview-page-B77xqiiI.js → share-preview-page-CKCTMo0_.js} +2 -2
  47. package/dist/gateway/static/root/assets/{skills-page-B_bAZGzB.js → skills-page-QwFCB4yV.js} +1 -1
  48. package/dist/gateway/static/root/assets/{theme-store-BgCPrmxU.js → theme-store-B6KXPHgK.js} +1 -1
  49. package/dist/gateway/static/root/assets/{utils-CCGejlcX.js → utils-DCm11_KW.js} +1 -1
  50. package/dist/gateway/static/root/assets/{voice-api-key-field-DZzzihcY.js → voice-api-key-field-CywiB7Dw.js} +1 -1
  51. package/dist/gateway/static/root/assets/{workflow-page.utils-D5RMAmT4.js → workflow-page.utils-g57BRfEd.js} +1 -1
  52. package/dist/gateway/static/root/assets/{workflows-page-DEYpC6Bv.js → workflows-page-Be7l_SWw.js} +1 -1
  53. package/dist/gateway/static/root/index.html +2 -2
  54. package/dist/package.js +1 -1
  55. package/dist/src/agent/agent-manager.js +23 -7
  56. package/dist/src/agent/agent-manager.js.map +1 -1
  57. package/dist/src/agent/agent-scope.js +1 -1
  58. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  59. package/dist/src/agent/context/workspace-seed.js +2 -2
  60. package/dist/src/agent/context/workspace-state.js +1 -1
  61. package/dist/src/agent/embedded/run-for-session.js +1 -0
  62. package/dist/src/agent/embedded/run-for-session.js.map +1 -1
  63. package/dist/src/agent/goals/goal-run-store.js +4 -4
  64. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  65. package/dist/src/agent/goals/post-turn.js +2 -2
  66. package/dist/src/agent/image/load-image-media.js +2 -2
  67. package/dist/src/agent/ipc/bus.js +1 -1
  68. package/dist/src/agent/ipc/inbox.js +2 -2
  69. package/dist/src/agent/ipc/socket.js +1 -1
  70. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  71. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  72. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  73. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  74. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  75. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  76. package/dist/src/agent/memory/dreaming/events.js +1 -1
  77. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  78. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  79. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  80. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  81. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  82. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  83. package/dist/src/agent/memory/memory-flush.js +1 -1
  84. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  85. package/dist/src/agent/models/manager.js +1 -1
  86. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  87. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  88. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  89. package/dist/src/agent/sandbox/path-policy.js +2 -2
  90. package/dist/src/agent/service.js +4 -4
  91. package/dist/src/agent/session/session-inspector.js +1 -1
  92. package/dist/src/agent/skills/config.js +1 -1
  93. package/dist/src/agent/skills/hub-hash.js +2 -2
  94. package/dist/src/agent/skills/hub-lock.js +1 -1
  95. package/dist/src/agent/skills/hub-pull.js +2 -2
  96. package/dist/src/agent/skills/index.js +1 -1
  97. package/dist/src/agent/skills/managed-store.js +1 -1
  98. package/dist/src/agent/skills/scanner.js +1 -1
  99. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  100. package/dist/src/agent/skills/skill-manager.js +1 -1
  101. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  102. package/dist/src/agent/tools/factory.js +1 -1
  103. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  104. package/dist/src/agent/tools/send-media.js +1 -1
  105. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  106. package/dist/src/agent/tools/workflow-tool.js +1 -1
  107. package/dist/src/agent/tools/write.js +1 -1
  108. package/dist/src/agent/workflow/catalog.js +1 -1
  109. package/dist/src/auth/credentials.js +3 -4
  110. package/dist/src/auth/credentials.js.map +1 -1
  111. package/dist/src/auth/profiles/store.js +1 -1
  112. package/dist/src/auth/sync-provider-auth.js +1 -1
  113. package/dist/src/browser/cache-dir-policy.js +1 -1
  114. package/dist/src/browser/cdp-local-launcher.js +2 -2
  115. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  116. package/dist/src/browser/providers/cloakbrowser.js +4 -4
  117. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  118. package/dist/src/browser/stealth.js +1 -1
  119. package/dist/src/channels/outbound/persist-store.js +1 -1
  120. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  121. package/dist/src/channels/pairing/pairing-store.js +2 -2
  122. package/dist/src/chat-commands/agent-edit.js +2 -2
  123. package/dist/src/chat-commands/builtins/config.js +2 -2
  124. package/dist/src/chat-commands/context.js +1 -1
  125. package/dist/src/cli/bin.d.ts +1 -0
  126. package/dist/src/cli/bin.js +1 -0
  127. package/dist/src/cli/bin.js.map +1 -1
  128. package/dist/src/cli/commands/config.js +1 -1
  129. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  130. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  131. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  132. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  133. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  134. package/dist/src/cli/commands/extension-dev.js +1 -1
  135. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  136. package/dist/src/cli/commands/extension-pack.js +1 -1
  137. package/dist/src/cli/commands/gateway/logs.js +1 -1
  138. package/dist/src/cli/commands/image.js +1 -1
  139. package/dist/src/cli/commands/init.js +3 -3
  140. package/dist/src/cli/utils/init-workspace-core.js +2 -2
  141. package/dist/src/commands/agents.config.js +1 -1
  142. package/dist/src/config/agent-profile.js +1 -1
  143. package/dist/src/config/gateway-bind.js +1 -1
  144. package/dist/src/config/index.js +5 -5
  145. package/dist/src/config/loader.js +2 -2
  146. package/dist/src/config/models-json.js +2 -2
  147. package/dist/src/config/paths-state.js +1 -1
  148. package/dist/src/config/profile.js +2 -2
  149. package/dist/src/config/workspace-path.js +1 -1
  150. package/dist/src/cron/executor.js +2 -2
  151. package/dist/src/cron/persistence.js +1 -1
  152. package/dist/src/daemon/constants.js +1 -1
  153. package/dist/src/daemon/install-plan.js +2 -2
  154. package/dist/src/daemon/launchd.js +2 -2
  155. package/dist/src/daemon/schtasks.js +2 -2
  156. package/dist/src/daemon/systemd.js +2 -2
  157. package/dist/src/extensions/bundle-mcp.js +1 -1
  158. package/dist/src/extensions/discover-extensions.js +1 -1
  159. package/dist/src/extensions/health.js +1 -1
  160. package/dist/src/extensions/loader.js +1 -1
  161. package/dist/src/extensions/lockfile.js +2 -2
  162. package/dist/src/extensions/update.js +1 -1
  163. package/dist/src/gateway/agents-admin.js +3 -3
  164. package/dist/src/gateway/file-path-classifier.js +2 -2
  165. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  166. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  167. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  168. package/dist/src/gateway/hono/oauth-async.js +36 -3
  169. package/dist/src/gateway/hono/oauth-async.js.map +1 -1
  170. package/dist/src/gateway/hono/oauth.js +1 -1
  171. package/dist/src/gateway/hono/routes/agents.js +1 -1
  172. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  173. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  174. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  175. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  176. package/dist/src/gateway/hono/routes/models.js +1 -1
  177. package/dist/src/gateway/hono/routes/notes.js +9 -22
  178. package/dist/src/gateway/hono/routes/notes.js.map +1 -1
  179. package/dist/src/gateway/hono/routes/shares.js +1 -1
  180. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  181. package/dist/src/gateway/lock.js +3 -3
  182. package/dist/src/gateway/ports.js +1 -1
  183. package/dist/src/gateway/service/agent-runner.js +2 -2
  184. package/dist/src/gateway/service/marketplace-service.js +2 -2
  185. package/dist/src/gateway/service.js +1 -1
  186. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  187. package/dist/src/infra/brew.js +1 -1
  188. package/dist/src/infra/http-proxy-env.d.ts +4 -0
  189. package/dist/src/infra/http-proxy-env.js +23 -0
  190. package/dist/src/infra/http-proxy-env.js.map +1 -0
  191. package/dist/src/infra/package-json.js +1 -1
  192. package/dist/src/infra/package-update-steps.js +1 -1
  193. package/dist/src/infra/path-env.js +2 -2
  194. package/dist/src/infra/restart.js +2 -2
  195. package/dist/src/infra/stable-node-path.js +1 -1
  196. package/dist/src/infra/update-check.js +1 -1
  197. package/dist/src/infra/update-global.js +1 -1
  198. package/dist/src/infra/update-lock.js +3 -3
  199. package/dist/src/infra/update-runner.js +1 -1
  200. package/dist/src/infra/update-startup.js +2 -2
  201. package/dist/src/infra/write-file-atomic.js +2 -2
  202. package/dist/src/media/store.js +1 -1
  203. package/dist/src/notes/note-attachment-sync.d.ts +2 -3
  204. package/dist/src/notes/note-attachment-sync.js +2 -27
  205. package/dist/src/notes/note-attachment-sync.js.map +1 -1
  206. package/dist/src/notes/note-index-meta.d.ts +6 -2
  207. package/dist/src/notes/note-index-meta.js +11 -16
  208. package/dist/src/notes/note-index-meta.js.map +1 -1
  209. package/dist/src/notes/note-markdown.d.ts +61 -0
  210. package/dist/src/notes/note-markdown.js +177 -0
  211. package/dist/src/notes/note-markdown.js.map +1 -0
  212. package/dist/src/notes/service.d.ts +9 -7
  213. package/dist/src/notes/service.js +163 -312
  214. package/dist/src/notes/service.js.map +1 -1
  215. package/dist/src/notes/store.js +4 -5
  216. package/dist/src/notes/store.js.map +1 -1
  217. package/dist/src/notes/types.d.ts +29 -58
  218. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  219. package/dist/src/providers/index.js +2 -2
  220. package/dist/src/providers/model-registry.js +1 -1
  221. package/dist/src/session/init-session-turn.js +2 -2
  222. package/dist/src/session/resolve-session.js +3 -3
  223. package/dist/src/session/session-title.js +2 -2
  224. package/dist/src/session/store.js +2 -2
  225. package/dist/src/share/share-auto.js +2 -2
  226. package/dist/src/share/share-store.js +3 -3
  227. package/dist/src/share/share-thumbnail.js +2 -2
  228. package/dist/src/share/share-zip.js +1 -1
  229. package/dist/src/share/site-share-store.js +3 -3
  230. package/dist/src/share/site-static-serve.js +1 -1
  231. package/dist/src/storage/sqlite/connection.js +2 -2
  232. package/dist/src/storage/sqlite/memory-index-repository.js +2 -2
  233. package/dist/src/storage/sqlite/migrations/003_add_note_markdown_meta.sql +4 -0
  234. package/dist/src/storage/sqlite/migrations/discover.js +1 -1
  235. package/dist/src/storage/sqlite/migrations/runner.d.ts +2 -2
  236. package/dist/src/storage/sqlite/migrations/runner.js +5 -5
  237. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  238. package/dist/src/storage/sqlite/migrations/runner.ts +2 -2
  239. package/dist/src/storage/sqlite/notes-repository.js +18 -6
  240. package/dist/src/storage/sqlite/notes-repository.js.map +1 -1
  241. package/dist/src/storage/sqlite/schema.js +4 -4
  242. package/dist/src/storage/sqlite/schema.sql +5 -1
  243. package/dist/src/tui/clipboard-image.js +3 -3
  244. package/dist/src/tui/theme-manager.js +1 -1
  245. package/dist/src/tui/tui-keybindings-file.js +1 -1
  246. package/dist/src/tui/tui-scoped-models.js +2 -2
  247. package/dist/src/tui/tui-settings.js +1 -1
  248. package/dist/src/tui/tui.js +3 -3
  249. package/dist/src/tunnel/frpc-binary.js +3 -3
  250. package/dist/src/tunnel/frpc-config.js +1 -1
  251. package/dist/src/tunnel/frpc-extract.js +1 -1
  252. package/dist/src/tunnel/tunnel-state.js +1 -1
  253. package/dist/src/utils/logger/audit.js +1 -1
  254. package/dist/src/utils/logger/log-store.js +1 -1
  255. package/dist/src/utils/logger/rotation.js +1 -1
  256. package/dist/src/voice/tts/audio.js +1 -1
  257. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  258. package/dist/src/workflows/store/event-store.js +1 -1
  259. package/dist/src/workflows/store/run-store.js +1 -1
  260. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note-markdown.js","names":[],"sources":["../../../src/notes/note-markdown.ts"],"sourcesContent":["import { attachmentIdFromTarget } from './attachment-ref.js';\n\nexport interface NoteHeading {\n id: string;\n depth: 1 | 2 | 3 | 4 | 5 | 6;\n title: string;\n start: number;\n end: number;\n path: string[];\n}\n\nexport interface NoteSection {\n id: string;\n heading?: NoteHeading;\n start: number;\n end: number;\n markdown: string;\n plainText: string;\n}\n\nexport interface NoteTaskItem {\n id: string;\n text: string;\n checked: boolean;\n start: number;\n end: number;\n line: number;\n}\n\nexport interface NoteWikiLink {\n raw: string;\n target: string;\n alias?: string;\n heading?: string;\n start: number;\n end: number;\n}\n\nexport interface NoteAttachmentRef {\n attachmentId: string;\n start: number;\n end: number;\n}\n\nexport interface NoteCallout {\n type: string;\n title?: string;\n start: number;\n end: number;\n}\n\nexport interface ParsedNoteMarkdown {\n plainText: string;\n headings: NoteHeading[];\n sections: NoteSection[];\n tasks: NoteTaskItem[];\n tags: string[];\n wikilinks: NoteWikiLink[];\n attachments: NoteAttachmentRef[];\n callouts: NoteCallout[];\n codeBlocks: Array<{ lang?: string; start: number; end: number; code: string }>;\n}\n\nconst WIKILINK = /!??\\[\\[([^\\]]+)\\]\\]/g;\nconst TAG = /(^|\\s)#([\\p{L}\\p{N}_/-]+)/gu;\nconst MARKDOWN_IMAGE = /!\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst MARKDOWN_LINK = /(?<!!)\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst BARE_ATTACHMENT_REF = /xopc-attachment:\\/\\/notes\\/([^/]+)\\/([^/?#\"'\\s)]+)/gi;\n\nfunction stripMarkdown(markdown: string): string {\n return markdown\n .replace(/^---[\\s\\S]*?\\n---\\s*/m, '')\n .replace(/```[\\s\\S]*?```/g, ' ')\n .replace(MARKDOWN_IMAGE, ' ')\n .replace(MARKDOWN_LINK, '$1')\n .replace(WIKILINK, '$1')\n .replace(/^\\s{0,3}>\\s?/gm, '')\n .replace(/^\\s{0,3}#{1,6}\\s+/gm, '')\n .replace(/^\\s*[-*+]\\s+\\[[ xX]\\]\\s+/gm, '')\n .replace(/^\\s*[-*+]\\s+/gm, '')\n .replace(/^\\s*\\d+\\.\\s+/gm, '')\n .replace(/[*_`~]/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\nfunction lineOffsets(markdown: string): Array<{ line: string; start: number; end: number }> {\n const lines: Array<{ line: string; start: number; end: number }> = [];\n let start = 0;\n for (const part of markdown.split(/\\n/)) {\n const end = start + part.length;\n lines.push({ line: part, start, end });\n start = end + 1;\n }\n return lines;\n}\n\nexport function parseNoteMarkdown(markdown = '', noteId?: string): ParsedNoteMarkdown {\n const headings: NoteHeading[] = [];\n const tasks: NoteTaskItem[] = [];\n const callouts: NoteCallout[] = [];\n const codeBlocks: ParsedNoteMarkdown['codeBlocks'] = [];\n const stack: string[] = [];\n let inCode: { start: number; lang?: string; lines: string[] } | null = null;\n\n lineOffsets(markdown).forEach(({ line, start, end }, index) => {\n const fence = /^```\\s*([^`]*)$/.exec(line.trim());\n if (fence) {\n if (inCode) {\n codeBlocks.push({ start: inCode.start, end, lang: inCode.lang, code: inCode.lines.join('\\n') });\n inCode = null;\n } else {\n inCode = { start, lang: fence[1]?.trim() || undefined, lines: [] };\n }\n return;\n }\n if (inCode) {\n inCode.lines.push(line);\n return;\n }\n\n const heading = /^(#{1,6})\\s+(.+?)\\s*$/.exec(line);\n if (heading) {\n const depth = heading[1].length as 1 | 2 | 3 | 4 | 5 | 6;\n stack.length = depth - 1;\n stack[depth - 1] = heading[2].trim();\n headings.push({\n id: `heading-${headings.length + 1}`,\n depth,\n title: heading[2].trim(),\n start,\n end,\n path: stack.slice(0, depth),\n });\n }\n\n const task = /^\\s*[-*+]\\s+\\[([ xX])\\]\\s+(.+)$/.exec(line);\n if (task) {\n tasks.push({\n id: `task-${tasks.length + 1}`,\n text: task[2].trim(),\n checked: task[1].toLowerCase() === 'x',\n start,\n end,\n line: index + 1,\n });\n }\n\n const callout = /^\\s*>\\s*\\[!([A-Za-z0-9_-]+)\\]\\s*(.*)$/.exec(line);\n if (callout) {\n callouts.push({ type: callout[1].toLowerCase(), title: callout[2]?.trim() || undefined, start, end });\n }\n });\n\n if (inCode) {\n codeBlocks.push({ start: inCode.start, end: markdown.length, lang: inCode.lang, code: inCode.lines.join('\\n') });\n }\n\n const sections: NoteSection[] = [];\n if (headings.length === 0) {\n sections.push({ id: 'section-1', start: 0, end: markdown.length, markdown, plainText: stripMarkdown(markdown) });\n } else {\n for (let i = 0; i < headings.length; i += 1) {\n const heading = headings[i];\n const next = headings.slice(i + 1).find((item) => item.depth <= heading.depth);\n const end = next?.start ?? markdown.length;\n const slice = markdown.slice(heading.start, end).trimEnd();\n sections.push({ id: `section-${i + 1}`, heading, start: heading.start, end, markdown: slice, plainText: stripMarkdown(slice) });\n }\n }\n\n const wikilinks: NoteWikiLink[] = [];\n for (const match of markdown.matchAll(WIKILINK)) {\n const rawInner = match[1];\n const [targetPart, alias] = rawInner.split('|');\n const [target, heading] = targetPart.split('#');\n wikilinks.push({ raw: match[0], target: target.trim(), heading: heading?.trim() || undefined, alias: alias?.trim() || undefined, start: match.index ?? 0, end: (match.index ?? 0) + match[0].length });\n }\n\n const tags = new Set<string>();\n for (const match of markdown.matchAll(TAG)) tags.add(match[2]);\n\n const attachments = new Map<string, NoteAttachmentRef>();\n const addAttachment = (target: string, start: number, end: number) => {\n const attachmentId = attachmentIdFromTarget(target, noteId ?? '');\n if (attachmentId) attachments.set(`${attachmentId}:${start}`, { attachmentId, start, end });\n };\n for (const match of markdown.matchAll(MARKDOWN_IMAGE)) addAttachment(match[2], match.index ?? 0, (match.index ?? 0) + match[0].length);\n for (const match of markdown.matchAll(MARKDOWN_LINK)) addAttachment(match[2], match.index ?? 0, (match.index ?? 0) + match[0].length);\n for (const match of markdown.matchAll(BARE_ATTACHMENT_REF)) {\n const start = match.index ?? 0;\n const matchedNoteId = decodeURIComponent(match[1]);\n if (!noteId || matchedNoteId === noteId) attachments.set(`${decodeURIComponent(match[2])}:${start}`, { attachmentId: decodeURIComponent(match[2]), start, end: start + match[0].length });\n }\n\n return {\n plainText: stripMarkdown(markdown),\n headings,\n sections,\n tasks,\n tags: [...tags],\n wikilinks,\n attachments: [...attachments.values()],\n callouts,\n codeBlocks,\n };\n}\n\nexport function applyNotePatch(markdown: string, operations: import('./types.js').NotePatchOperation[], parsed = parseNoteMarkdown(markdown)): string {\n let next = markdown;\n const rangeOps = operations.filter((op) => op.type === 'replaceRange' || op.type === 'insertAt') as Array<Extract<import('./types.js').NotePatchOperation, { type: 'replaceRange' | 'insertAt' }>>;\n for (const op of [...rangeOps].sort((a, b) => (b.type === 'insertAt' ? b.offset : b.from) - (a.type === 'insertAt' ? a.offset : a.from))) {\n if (op.type === 'insertAt') next = `${next.slice(0, op.offset)}${op.markdown}${next.slice(op.offset)}`;\n else next = `${next.slice(0, op.from)}${op.markdown}${next.slice(op.to)}`;\n }\n for (const op of operations) {\n if (op.type === 'appendSection') next = `${next.trimEnd()}\\n\\n## ${op.heading}\\n\\n${op.markdown.trim()}\\n`;\n if (op.type === 'prependSection') next = `## ${op.heading}\\n\\n${op.markdown.trim()}\\n\\n${next.trimStart()}`;\n if (op.type === 'replaceSection') {\n const section = parsed.sections.find((item) => item.id === op.sectionId);\n if (section) next = `${next.slice(0, section.start)}${op.markdown}${next.slice(section.end)}`;\n }\n }\n return next;\n}\n"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import type { Config } from '../config/schema.js';
2
+ import { buildNoteAttachmentRef } from './attachment-ref.js';
2
3
  import { NotesStore } from './store.js';
3
- import type { CaptureSource, CreateNoteParams, Note, NoteAiPatch, NoteAttachment, NoteBlock, NoteCatalysisMeta, NoteCatalysisReport, NoteIndexEntry, NoteSnapshot, NoteSnapshotEntry, NotesListQuery, SnapshotTrigger } from './types.js';
4
+ import type { CaptureSource, CreateNoteParams, Note, NoteAiPatch, NoteAttachment, NoteCatalysisReport, NoteIndexEntry, NoteSnapshot, NoteSnapshotEntry, NotesListQuery, SnapshotTrigger } from './types.js';
4
5
  export declare class NotesService {
5
- private store;
6
+ private readonly store;
6
7
  private lastSnapshotAt;
7
- constructor(store: NotesStore);
8
+ constructor(store?: NotesStore);
8
9
  initialize(): Promise<void>;
9
- quickCapture(text: string, source: CaptureSource): Promise<Note>;
10
+ quickCapture(markdown: string, source: CaptureSource): Promise<Note>;
10
11
  createNote(params: CreateNoteParams): Promise<Note>;
11
12
  getNote(id: string): Promise<Note | null>;
12
13
  updateNote(id: string, patch: Partial<Note>, trigger?: SnapshotTrigger): Promise<Note | null>;
@@ -15,7 +16,7 @@ export declare class NotesService {
15
16
  note: Note | null;
16
17
  conflict: boolean;
17
18
  }>;
18
- createAiEditPatch(id: string, instruction: string, blocks?: NoteBlock[]): Promise<{
19
+ createAiEditPatch(id: string, instruction: string, markdownOverride?: string): Promise<{
19
20
  message: string;
20
21
  patch: NoteAiPatch;
21
22
  } | null>;
@@ -23,7 +24,7 @@ export declare class NotesService {
23
24
  note: Note;
24
25
  report: NoteCatalysisReport;
25
26
  } | null>;
26
- recordCatalysisFeedback(id: string, feedback: NonNullable<NoteCatalysisMeta['feedback']>): Promise<Note | null>;
27
+ recordCatalysisFeedback(id: string, feedback: 'helpful' | 'not_helpful' | 'neutral'): Promise<Note | null>;
27
28
  linkNoteThread(id: string, sessionKey: string): Promise<Note | null>;
28
29
  listNoteThreads(id: string): Promise<string[] | null>;
29
30
  appendTextToNote(id: string, content: string, heading?: string): Promise<Note | null>;
@@ -51,7 +52,7 @@ export declare class NotesService {
51
52
  restoreNoteSnapshot(noteId: string, timestamp: number): Promise<Note | null>;
52
53
  flush(): Promise<void>;
53
54
  moveToGroup(noteId: string, groupId: string | null): Promise<Note | null>;
54
- createTask(title: string, source: CaptureSource, options?: {
55
+ createTask(title: string, source: CaptureSource, opts?: {
55
56
  dueAt?: number;
56
57
  priority?: 'high' | 'medium' | 'low';
57
58
  sourceSessionKey?: string;
@@ -63,3 +64,4 @@ export declare class NotesService {
63
64
  recordOpen(noteId: string): Promise<Note | null>;
64
65
  private maybeSaveSnapshot;
65
66
  }
67
+ export { buildNoteAttachmentRef };