@xrkseek/harness 0.4.3 → 0.4.5
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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/a2a/README.md +43 -0
- package/node_modules/@xrkseek/a2a/dist/client.d.ts +35 -0
- package/node_modules/@xrkseek/a2a/dist/client.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/client.js +229 -0
- package/node_modules/@xrkseek/a2a/dist/client.js.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/inbound.d.ts +42 -0
- package/node_modules/@xrkseek/a2a/dist/inbound.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/inbound.js +263 -0
- package/node_modules/@xrkseek/a2a/dist/inbound.js.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/index.d.ts +6 -0
- package/node_modules/@xrkseek/a2a/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/index.js +6 -0
- package/node_modules/@xrkseek/a2a/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/peers.d.ts +25 -0
- package/node_modules/@xrkseek/a2a/dist/peers.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/peers.js +90 -0
- package/node_modules/@xrkseek/a2a/dist/peers.js.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/protocol.d.ts +45 -0
- package/node_modules/@xrkseek/a2a/dist/protocol.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/protocol.js +172 -0
- package/node_modules/@xrkseek/a2a/dist/protocol.js.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/tools.d.ts +10 -0
- package/node_modules/@xrkseek/a2a/dist/tools.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/tools.js +145 -0
- package/node_modules/@xrkseek/a2a/dist/tools.js.map +1 -0
- package/node_modules/@xrkseek/a2a/package.json +28 -0
- package/node_modules/@xrkseek/attachment/README.md +23 -17
- package/node_modules/@xrkseek/attachment/dist/image-tokens.d.ts +30 -0
- package/node_modules/@xrkseek/attachment/dist/image-tokens.d.ts.map +1 -0
- package/node_modules/@xrkseek/attachment/dist/image-tokens.js +142 -0
- package/node_modules/@xrkseek/attachment/dist/image-tokens.js.map +1 -0
- package/node_modules/@xrkseek/attachment/dist/index.d.ts +2 -0
- package/node_modules/@xrkseek/attachment/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/attachment/dist/index.js +2 -0
- package/node_modules/@xrkseek/attachment/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/attachment/dist/request-projection.d.ts +20 -0
- package/node_modules/@xrkseek/attachment/dist/request-projection.d.ts.map +1 -0
- package/node_modules/@xrkseek/attachment/dist/request-projection.js +49 -0
- package/node_modules/@xrkseek/attachment/dist/request-projection.js.map +1 -0
- package/node_modules/@xrkseek/attachment-local/dist/request-image.d.ts +2 -11
- package/node_modules/@xrkseek/attachment-local/dist/request-image.d.ts.map +1 -1
- package/node_modules/@xrkseek/attachment-local/dist/request-image.js +3 -29
- package/node_modules/@xrkseek/attachment-local/dist/request-image.js.map +1 -1
- package/node_modules/@xrkseek/checkpoint/README.md +4 -2
- package/node_modules/@xrkseek/checkpoint/dist/process-git.d.ts +6 -0
- package/node_modules/@xrkseek/checkpoint/dist/process-git.d.ts.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/process-git.js +23 -1
- package/node_modules/@xrkseek/checkpoint/dist/process-git.js.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/store.d.ts +30 -2
- package/node_modules/@xrkseek/checkpoint/dist/store.d.ts.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/store.js +58 -15
- package/node_modules/@xrkseek/checkpoint/dist/store.js.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/types.d.ts +14 -4
- package/node_modules/@xrkseek/checkpoint/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/types.js.map +1 -1
- package/node_modules/@xrkseek/checkpoint/package.json +4 -1
- package/node_modules/@xrkseek/context-fragments/dist/index.d.ts +14 -0
- package/node_modules/@xrkseek/context-fragments/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/context-fragments/dist/index.js +33 -0
- package/node_modules/@xrkseek/context-fragments/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent/dist/index.d.ts +7 -0
- package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent/dist/index.js +6 -0
- package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.js +1 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +12 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +95 -50
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.d.ts +14 -0
- package/node_modules/@xrkseek/core-session/dist/compaction.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.js +41 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.js +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-session/package.json +1 -0
- package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/index.js +1 -0
- package/node_modules/@xrkseek/core-system-prompt/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/time-context.d.ts +22 -0
- package/node_modules/@xrkseek/core-system-prompt/dist/time-context.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-system-prompt/dist/time-context.js +47 -0
- package/node_modules/@xrkseek/core-system-prompt/dist/time-context.js.map +1 -0
- package/node_modules/@xrkseek/core-tools/dist/definition.d.ts +14 -0
- package/node_modules/@xrkseek/core-tools/dist/definition.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/definition.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts +2 -2
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/materialize.d.ts +9 -3
- package/node_modules/@xrkseek/core-tools/dist/materialize.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/materialize.js +38 -8
- package/node_modules/@xrkseek/core-tools/dist/materialize.js.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/format.d.ts +2 -0
- package/node_modules/@xrkseek/exec-computer-use/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/format.js +4 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-environment/README.md +21 -0
- package/node_modules/@xrkseek/exec-environment/dist/http.d.ts +34 -0
- package/node_modules/@xrkseek/exec-environment/dist/http.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/http.js +259 -0
- package/node_modules/@xrkseek/exec-environment/dist/http.js.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/index.d.ts +5 -0
- package/node_modules/@xrkseek/exec-environment/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/index.js +4 -0
- package/node_modules/@xrkseek/exec-environment/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/local.d.ts +11 -0
- package/node_modules/@xrkseek/exec-environment/dist/local.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/local.js +30 -0
- package/node_modules/@xrkseek/exec-environment/dist/local.js.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/resolve.d.ts +23 -0
- package/node_modules/@xrkseek/exec-environment/dist/resolve.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/resolve.js +39 -0
- package/node_modules/@xrkseek/exec-environment/dist/resolve.js.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/types.d.ts +33 -0
- package/node_modules/@xrkseek/exec-environment/dist/types.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-environment/dist/types.js +9 -0
- package/node_modules/@xrkseek/exec-environment/dist/types.js.map +1 -0
- package/node_modules/@xrkseek/exec-environment/package.json +28 -0
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.js +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/present.d.ts +5 -2
- package/node_modules/@xrkseek/exec-fs/dist/present.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/present.js +22 -4
- package/node_modules/@xrkseek/exec-fs/dist/present.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/README.md +6 -4
- package/node_modules/@xrkseek/exec-image-gen/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/format.js +6 -3
- package/node_modules/@xrkseek/exec-image-gen/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/index.d.ts +4 -2
- package/node_modules/@xrkseek/exec-image-gen/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/index.js +4 -2
- package/node_modules/@xrkseek/exec-image-gen/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/memory.d.ts +4 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/memory.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/memory.js +16 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/memory.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/openai-http.d.ts +5 -2
- package/node_modules/@xrkseek/exec-image-gen/dist/openai-http.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/openai-http.js +88 -38
- package/node_modules/@xrkseek/exec-image-gen/dist/openai-http.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/references.d.ts +21 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/references.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/references.js +145 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/references.js.map +1 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/schema.d.ts +15 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/schema.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/schema.js +67 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/schema.js.map +1 -0
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.d.ts +5 -2
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.js +38 -36
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/types.d.ts +34 -2
- package/node_modules/@xrkseek/exec-image-gen/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/types.js +16 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/types.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/README.md +3 -2
- package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +2 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.js +2 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/provider.d.ts +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/provider.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts +15 -4
- package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/resolve.js +13 -3
- package/node_modules/@xrkseek/exec-memory/dist/resolve.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/sqlite.d.ts +19 -0
- package/node_modules/@xrkseek/exec-memory/dist/sqlite.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/sqlite.js +190 -0
- package/node_modules/@xrkseek/exec-memory/dist/sqlite.js.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts +21 -0
- package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/write-path.js +128 -25
- package/node_modules/@xrkseek/exec-memory/dist/write-path.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/README.md +27 -19
- package/node_modules/@xrkseek/exec-video-gen/dist/catalog.d.ts +16 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/catalog.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/catalog.js +90 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/catalog.js.map +1 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/format.js +3 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/index.d.ts +5 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/index.js +5 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/memory.d.ts +3 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/memory.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/memory.js +45 -4
- package/node_modules/@xrkseek/exec-video-gen/dist/memory.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/openai-http.d.ts +3 -6
- package/node_modules/@xrkseek/exec-video-gen/dist/openai-http.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/openai-http.js +81 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/openai-http.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/references.d.ts +24 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/references.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/references.js +151 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/references.js.map +1 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/schema.d.ts +15 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/schema.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/schema.js +104 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/schema.js.map +1 -0
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.d.ts +4 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.js +99 -70
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/types.d.ts +73 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/types.js +20 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/types.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/README.md +2 -2
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts +3 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.js +3 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-vault-tools.d.ts +32 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-vault-tools.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-vault-tools.js +141 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-vault-tools.js.map +1 -0
- package/node_modules/@xrkseek/exec-web/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/exec-web/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.js +1 -0
- package/node_modules/@xrkseek/exec-web/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/llm-deepseek/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/llm-deepseek/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/llm-deepseek/dist/index.js +2 -1
- package/node_modules/@xrkseek/llm-deepseek/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.d.ts +13 -3
- package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.d.ts.map +1 -1
- package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.js +27 -4
- package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/README.md +8 -8
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +11 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.js +11 -3
- package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-minimal/README.md +2 -2
- package/node_modules/@xrkseek/preset-minimal/dist/preset.js +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-server/README.md +5 -5
- package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.js +3 -2
- package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +9 -0
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.js +9 -0
- package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
- package/node_modules/@xrkseek/server-config/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/server-config/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-config/dist/index.js +1 -0
- package/node_modules/@xrkseek/server-config/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-config/dist/json-text.d.ts +8 -0
- package/node_modules/@xrkseek/server-config/dist/json-text.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-config/dist/json-text.js +12 -0
- package/node_modules/@xrkseek/server-config/dist/json-text.js.map +1 -0
- package/node_modules/@xrkseek/server-cron/README.md +3 -2
- package/node_modules/@xrkseek/server-cron/dist/executions.d.ts +31 -0
- package/node_modules/@xrkseek/server-cron/dist/executions.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-cron/dist/executions.js +95 -0
- package/node_modules/@xrkseek/server-cron/dist/executions.js.map +1 -0
- package/node_modules/@xrkseek/server-cron/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/server-cron/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-cron/dist/index.js +6 -0
- package/node_modules/@xrkseek/server-cron/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-cron/dist/scheduler.d.ts +4 -0
- package/node_modules/@xrkseek/server-cron/dist/scheduler.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-cron/dist/scheduler.js +33 -24
- package/node_modules/@xrkseek/server-cron/dist/scheduler.js.map +1 -1
- package/node_modules/@xrkseek/server-cron/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-cron/dist/tools.js +44 -6
- package/node_modules/@xrkseek/server-cron/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/dispatch.js +2 -0
- package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.d.ts +37 -2
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.js +191 -28
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/worktree.d.ts +10 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/worktree.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/worktree.js +33 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/worktree.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/host-open-path.d.ts +9 -0
- package/node_modules/@xrkseek/server-face/dist/host-open-path.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/host-open-path.js +13 -7
- package/node_modules/@xrkseek/server-face/dist/host-open-path.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +2 -2
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/llm-provider-context.d.ts +2 -0
- package/node_modules/@xrkseek/server-face/dist/llm-provider-context.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/llm-provider-context.js +13 -0
- package/node_modules/@xrkseek/server-face/dist/llm-provider-context.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/llm-resolve.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/llm-resolve.js +3 -1
- package/node_modules/@xrkseek/server-face/dist/llm-resolve.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts +4 -0
- package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.js +24 -5
- package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/presets-catalog.js +5 -5
- package/node_modules/@xrkseek/server-face/dist/presets-catalog.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.js +14 -2
- package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/select-session-model.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/select-session-model.js +8 -0
- package/node_modules/@xrkseek/server-face/dist/select-session-model.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts +11 -0
- package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-model-store.js +66 -0
- package/node_modules/@xrkseek/server-face/dist/session-model-store.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +64 -13
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-status.js +173 -5
- package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.js +4 -5
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +36 -4
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts +15 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js +35 -7
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.d.ts +11 -0
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.js +22 -0
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.js.map +1 -0
- package/node_modules/@xrkseek/server-host/dist/index.d.ts +3 -0
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +178 -48
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/mcp-wire.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/mcp-wire.js +3 -3
- package/node_modules/@xrkseek/server-host/dist/mcp-wire.js.map +1 -1
- package/node_modules/@xrkseek/server-host/package.json +2 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/embedded-vector-store.d.ts +2 -2
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/embedded-vector-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/embedded-vector-store.js +9 -4
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/embedded-vector-store.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.d.ts +37 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.js +125 -9
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.js.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/index.js +1 -0
- package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/skill-curator.d.ts +46 -0
- package/node_modules/@xrkseek/workspace/dist/skill-curator.d.ts.map +1 -0
- package/node_modules/@xrkseek/workspace/dist/skill-curator.js +114 -0
- package/node_modules/@xrkseek/workspace/dist/skill-curator.js.map +1 -0
- package/package.json +5 -1
|
@@ -1,25 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
* Resolve which curated MemoryProvider to use (file default · HTTP · sqlite).
|
|
4
|
+
|
|
3
5
|
* Mirrors Hermes `memory.provider` single-select; curated file remains default.
|
|
6
|
+
|
|
4
7
|
*/
|
|
5
8
|
import { type CreateCuratedMemoryStoreOptions } from "./store.js";
|
|
6
9
|
import { type HttpMemoryProviderOptions } from "./http.js";
|
|
10
|
+
import { type SqliteMemoryProviderOptions } from "./sqlite.js";
|
|
7
11
|
import type { MemoryProvider } from "./provider.js";
|
|
8
12
|
export interface ResolveMemoryProviderOptions {
|
|
9
13
|
readonly env?: NodeJS.ProcessEnv;
|
|
10
14
|
readonly file?: CreateCuratedMemoryStoreOptions;
|
|
11
15
|
readonly http?: Partial<HttpMemoryProviderOptions>;
|
|
16
|
+
readonly sqlite?: SqliteMemoryProviderOptions;
|
|
12
17
|
/**
|
|
18
|
+
|
|
13
19
|
* Force provider kind. When omitted, reads `XRK_MEMORY_PROVIDER`
|
|
14
|
-
|
|
20
|
+
|
|
21
|
+
* (`file` | `http` | `sqlite`; default `file`).
|
|
22
|
+
|
|
15
23
|
*/
|
|
16
|
-
readonly kind?: "file" | "http";
|
|
24
|
+
readonly kind?: "file" | "http" | "sqlite";
|
|
17
25
|
}
|
|
18
26
|
/** Wrap the disk store as a named {@link MemoryProvider}. */
|
|
19
27
|
export declare function createFileMemoryProvider(options?: CreateCuratedMemoryStoreOptions): MemoryProvider;
|
|
20
28
|
/**
|
|
21
|
-
|
|
29
|
+
|
|
30
|
+
* Pick file (default), HTTP, or sqlite curated provider.
|
|
31
|
+
|
|
22
32
|
* HTTP requires `XRK_MEMORY_HTTP_URL` (or `options.http.baseUrl`).
|
|
33
|
+
|
|
23
34
|
*/
|
|
24
35
|
export declare function resolveMemoryProvider(options?: ResolveMemoryProviderOptions): Promise<MemoryProvider>;
|
|
25
36
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAA4B,KAAK,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAE5F,OAAO,EAA4B,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAErF,OAAO,EAIL,KAAK,2BAA2B,EAEjC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,MAAM,WAAW,4BAA4B;IAE3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAEjC,QAAQ,CAAC,IAAI,CAAC,EAAE,+BAA+B,CAAC;IAEhD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEnD,QAAQ,CAAC,MAAM,CAAC,EAAE,2BAA2B,CAAC;IAE9C;;;;;;OAMG;IAEH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;CAE5C;AAID,6DAA6D;AAE7D,wBAAgB,wBAAwB,CAEtC,OAAO,CAAC,EAAE,+BAA+B,GAExC,cAAc,CAchB;AAID;;;;;;GAMG;AAEH,wBAAsB,qBAAqB,CAEzC,OAAO,GAAE,4BAAiC,GAEzC,OAAO,CAAC,cAAc,CAAC,CAsEzB"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
* Resolve which curated MemoryProvider to use (file default · HTTP · sqlite).
|
|
4
|
+
|
|
3
5
|
* Mirrors Hermes `memory.provider` single-select; curated file remains default.
|
|
6
|
+
|
|
4
7
|
*/
|
|
5
8
|
import { createCuratedMemoryStore } from "./store.js";
|
|
6
9
|
import { createHttpMemoryProvider } from "./http.js";
|
|
10
|
+
import { createSqliteMemoryProvider, } from "./sqlite.js";
|
|
7
11
|
/** Wrap the disk store as a named {@link MemoryProvider}. */
|
|
8
12
|
export function createFileMemoryProvider(options) {
|
|
9
13
|
const store = createCuratedMemoryStore(options);
|
|
@@ -14,14 +18,17 @@ export function createFileMemoryProvider(options) {
|
|
|
14
18
|
};
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
|
-
|
|
21
|
+
|
|
22
|
+
* Pick file (default), HTTP, or sqlite curated provider.
|
|
23
|
+
|
|
18
24
|
* HTTP requires `XRK_MEMORY_HTTP_URL` (or `options.http.baseUrl`).
|
|
25
|
+
|
|
19
26
|
*/
|
|
20
27
|
export async function resolveMemoryProvider(options = {}) {
|
|
21
28
|
const env = options.env ?? process.env;
|
|
22
29
|
const kindRaw = (options.kind ??
|
|
23
30
|
String(env.XRK_MEMORY_PROVIDER ?? "file").trim().toLowerCase());
|
|
24
|
-
const kind = kindRaw === "http" ? "http" : "file";
|
|
31
|
+
const kind = kindRaw === "http" ? "http" : kindRaw === "sqlite" ? "sqlite" : "file";
|
|
25
32
|
if (kind === "http") {
|
|
26
33
|
const baseUrl = options.http?.baseUrl?.trim() ||
|
|
27
34
|
String(env.XRK_MEMORY_HTTP_URL ?? "").trim();
|
|
@@ -41,6 +48,9 @@ export async function resolveMemoryProvider(options = {}) {
|
|
|
41
48
|
: {}),
|
|
42
49
|
});
|
|
43
50
|
}
|
|
51
|
+
if (kind === "sqlite") {
|
|
52
|
+
return createSqliteMemoryProvider(options.sqlite);
|
|
53
|
+
}
|
|
44
54
|
return createFileMemoryProvider(options.file);
|
|
45
55
|
}
|
|
46
56
|
//# sourceMappingURL=resolve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,wBAAwB,EAAwC,MAAM,YAAY,CAAC;AAE5F,OAAO,EAAE,wBAAwB,EAAkC,MAAM,WAAW,CAAC;AAErF,OAAO,EAEL,0BAA0B,GAI3B,MAAM,aAAa,CAAC;AA8BrB,6DAA6D;AAE7D,MAAM,UAAU,wBAAwB,CAEtC,OAAyC;IAIzC,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO;QAEL,GAAG,KAAK;QAER,YAAY,EAAE,MAAM;QAEpB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;KAExB,CAAC;AAEJ,CAAC;AAID;;;;;;GAMG;AAEH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAEzC,UAAwC,EAAE;IAI1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAEvC,MAAM,OAAO,GAAG,CAEd,OAAO,CAAC,IAAI;QAEZ,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAE/D,CAAC;IAEF,MAAM,IAAI,GAER,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAEpB,MAAM,OAAO,GAEX,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;YAE7B,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YAEb,MAAM,IAAI,KAAK,CAEb,yEAAyE,CAE1E,CAAC;QAEJ,CAAC;QAED,MAAM,KAAK,GAET,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAE3B,MAAM,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAE9C,SAAS,CAAC;QAEZ,OAAO,wBAAwB,CAAC;YAE9B,OAAO;YAEP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3B,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEvD,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS;gBAEvC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;gBAEvC,CAAC,CAAC,EAAE,CAAC;SAER,CAAC,CAAC;IAEL,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAEtB,OAAO,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD,CAAC;IAED,OAAO,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite curated MemoryProvider sample (Node ≥22 `node:sqlite`).
|
|
3
|
+
* Same CuratedMemoryStore surface as file/HTTP — proves the pluggable seam.
|
|
4
|
+
* Not Mnemon / memory-embed.
|
|
5
|
+
*/
|
|
6
|
+
import type { MemoryProvider } from "./provider.js";
|
|
7
|
+
export interface SqliteMemoryProviderOptions {
|
|
8
|
+
readonly dir?: string;
|
|
9
|
+
/** Absolute db path; default `{dir}/curated-memory.sqlite`. */
|
|
10
|
+
readonly dbPath?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* File-backed sqlite curated store under `{XRK_HOME}/memories` by default.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSqliteMemoryProvider(options?: SqliteMemoryProviderOptions): SqliteMemoryProvider;
|
|
16
|
+
export type SqliteMemoryProvider = MemoryProvider & {
|
|
17
|
+
close(): void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAWpD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA6DD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CA4ItB;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite curated MemoryProvider sample (Node ≥22 `node:sqlite`).
|
|
3
|
+
* Same CuratedMemoryStore surface as file/HTTP — proves the pluggable seam.
|
|
4
|
+
* Not Mnemon / memory-embed.
|
|
5
|
+
*/
|
|
6
|
+
import { mkdirSync } from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { resolveXrkHome } from "@xrkseek/xrk-home-paths";
|
|
9
|
+
import { ENTRY_DELIMITER, MEMORY_CHAR_LIMIT, USER_CHAR_LIMIT, } from "./store.js";
|
|
10
|
+
function openDb(dbPath) {
|
|
11
|
+
const { DatabaseSync: Db } = process.getBuiltinModule("node:sqlite");
|
|
12
|
+
const db = new Db(dbPath);
|
|
13
|
+
db.exec(`
|
|
14
|
+
CREATE TABLE IF NOT EXISTS curated_entries (
|
|
15
|
+
target TEXT NOT NULL,
|
|
16
|
+
seq INTEGER NOT NULL,
|
|
17
|
+
body TEXT NOT NULL,
|
|
18
|
+
PRIMARY KEY (target, seq)
|
|
19
|
+
);
|
|
20
|
+
`);
|
|
21
|
+
return db;
|
|
22
|
+
}
|
|
23
|
+
function charLimit(target) {
|
|
24
|
+
return target === "user" ? USER_CHAR_LIMIT : MEMORY_CHAR_LIMIT;
|
|
25
|
+
}
|
|
26
|
+
function usageLine(target, chars) {
|
|
27
|
+
return `${chars}/${charLimit(target)}`;
|
|
28
|
+
}
|
|
29
|
+
function joinEntries(entries) {
|
|
30
|
+
return entries.join(ENTRY_DELIMITER);
|
|
31
|
+
}
|
|
32
|
+
function resultOk(target, entries, message) {
|
|
33
|
+
const body = joinEntries(entries);
|
|
34
|
+
return {
|
|
35
|
+
success: true,
|
|
36
|
+
done: true,
|
|
37
|
+
message,
|
|
38
|
+
target,
|
|
39
|
+
usage: usageLine(target, body.length),
|
|
40
|
+
entry_count: entries.length,
|
|
41
|
+
current_entries: entries,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function resultFail(target, entries, error) {
|
|
45
|
+
const body = joinEntries(entries);
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
error,
|
|
49
|
+
target,
|
|
50
|
+
usage: usageLine(target, body.length),
|
|
51
|
+
entry_count: entries.length,
|
|
52
|
+
current_entries: entries,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* File-backed sqlite curated store under `{XRK_HOME}/memories` by default.
|
|
57
|
+
*/
|
|
58
|
+
export function createSqliteMemoryProvider(options = {}) {
|
|
59
|
+
const dir = options.dir?.trim() || path.join(resolveXrkHome(), "memories");
|
|
60
|
+
mkdirSync(dir, { recursive: true });
|
|
61
|
+
const dbPath = options.dbPath?.trim() || path.join(dir, "curated-memory.sqlite");
|
|
62
|
+
const db = openDb(dbPath);
|
|
63
|
+
const list = (target) => {
|
|
64
|
+
const rows = db
|
|
65
|
+
.prepare(`SELECT body FROM curated_entries WHERE target = ? ORDER BY seq ASC`)
|
|
66
|
+
.all(target);
|
|
67
|
+
return rows.map((r) => r.body);
|
|
68
|
+
};
|
|
69
|
+
const replaceAll = (target, entries) => {
|
|
70
|
+
const tx = db.prepare("BEGIN IMMEDIATE");
|
|
71
|
+
const del = db.prepare(`DELETE FROM curated_entries WHERE target = ?`);
|
|
72
|
+
const ins = db.prepare(`INSERT INTO curated_entries (target, seq, body) VALUES (?, ?, ?)`);
|
|
73
|
+
const commit = db.prepare("COMMIT");
|
|
74
|
+
const rollback = db.prepare("ROLLBACK");
|
|
75
|
+
try {
|
|
76
|
+
tx.run();
|
|
77
|
+
del.run(target);
|
|
78
|
+
entries.forEach((body, seq) => {
|
|
79
|
+
ins.run(target, seq, body);
|
|
80
|
+
});
|
|
81
|
+
commit.run();
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
try {
|
|
85
|
+
rollback.run();
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
/* ignore */
|
|
89
|
+
}
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const frozenMemory = list("memory");
|
|
94
|
+
const frozenUser = list("user");
|
|
95
|
+
const frozenPrompt = (target) => {
|
|
96
|
+
const entries = target === "user" ? frozenUser : frozenMemory;
|
|
97
|
+
if (entries.length === 0)
|
|
98
|
+
return "";
|
|
99
|
+
const header = target === "user"
|
|
100
|
+
? "USER PROFILE (who the user is)"
|
|
101
|
+
: "MEMORY (durable facts across sessions — not a todo list or unfinished-work queue)";
|
|
102
|
+
return `${header}\n${joinEntries(entries)}`;
|
|
103
|
+
};
|
|
104
|
+
const applyOps = (target, operations) => {
|
|
105
|
+
let entries = list(target);
|
|
106
|
+
for (const op of operations) {
|
|
107
|
+
const action = String(op.action ?? "").trim();
|
|
108
|
+
const content = String(op.content ?? op.new_text ?? "").trim();
|
|
109
|
+
const oldText = String(op.old_text ?? "");
|
|
110
|
+
if (action === "add") {
|
|
111
|
+
if (!content)
|
|
112
|
+
return resultFail(target, entries, "content required");
|
|
113
|
+
entries = [...entries, content];
|
|
114
|
+
}
|
|
115
|
+
else if (action === "remove") {
|
|
116
|
+
if (!oldText)
|
|
117
|
+
return resultFail(target, entries, "old_text required");
|
|
118
|
+
const next = entries.filter((e) => !e.includes(oldText));
|
|
119
|
+
if (next.length === entries.length) {
|
|
120
|
+
return resultFail(target, entries, "old_text not found");
|
|
121
|
+
}
|
|
122
|
+
entries = next;
|
|
123
|
+
}
|
|
124
|
+
else if (action === "replace") {
|
|
125
|
+
if (!oldText || !content) {
|
|
126
|
+
return resultFail(target, entries, "old_text and content required");
|
|
127
|
+
}
|
|
128
|
+
let hits = 0;
|
|
129
|
+
entries = entries.map((e) => {
|
|
130
|
+
if (!e.includes(oldText))
|
|
131
|
+
return e;
|
|
132
|
+
hits += 1;
|
|
133
|
+
return content;
|
|
134
|
+
});
|
|
135
|
+
if (hits === 0)
|
|
136
|
+
return resultFail(target, entries, "old_text not found");
|
|
137
|
+
if (hits > 1) {
|
|
138
|
+
return resultFail(target, entries, "old_text matches multiple entries");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return resultFail(target, entries, `unknown action: ${action}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const body = joinEntries(entries);
|
|
146
|
+
if (body.length > charLimit(target)) {
|
|
147
|
+
return resultFail(target, list(target), `content would exceed the limit (${body.length}/${charLimit(target)})`);
|
|
148
|
+
}
|
|
149
|
+
replaceAll(target, entries);
|
|
150
|
+
return resultOk(target, entries, "Batch applied.");
|
|
151
|
+
};
|
|
152
|
+
const store = {
|
|
153
|
+
dir,
|
|
154
|
+
frozenPrompt,
|
|
155
|
+
frozenSystemBlock() {
|
|
156
|
+
return [frozenPrompt("memory"), frozenPrompt("user")]
|
|
157
|
+
.filter(Boolean)
|
|
158
|
+
.join("\n\n");
|
|
159
|
+
},
|
|
160
|
+
listEntries(target) {
|
|
161
|
+
return list(target);
|
|
162
|
+
},
|
|
163
|
+
add(target, content) {
|
|
164
|
+
return applyOps(target, [{ action: "add", content }]);
|
|
165
|
+
},
|
|
166
|
+
replace(target, oldText, content) {
|
|
167
|
+
return applyOps(target, [{ action: "replace", old_text: oldText, content }]);
|
|
168
|
+
},
|
|
169
|
+
remove(target, oldText) {
|
|
170
|
+
return applyOps(target, [{ action: "remove", old_text: oldText }]);
|
|
171
|
+
},
|
|
172
|
+
applyBatch(target, operations) {
|
|
173
|
+
return applyOps(target, operations);
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
return {
|
|
177
|
+
...store,
|
|
178
|
+
providerName: "sqlite",
|
|
179
|
+
isAvailable: () => true,
|
|
180
|
+
close() {
|
|
181
|
+
try {
|
|
182
|
+
db.close();
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
/* already closed */
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,13 @@ export interface SessionEndConsolidateInput {
|
|
|
15
15
|
/** Cap new entries written in one consolidate pass (default 12). */
|
|
16
16
|
readonly maxNotes?: number;
|
|
17
17
|
}
|
|
18
|
+
/** Injected one-shot completion for Phase2 LLM extract (Host supplies session LLM). */
|
|
19
|
+
export type Phase2CompleteFn = (prompt: string) => Promise<string> | string;
|
|
20
|
+
export interface SessionEndPhase2Input extends SessionEndConsolidateInput {
|
|
21
|
+
readonly complete: Phase2CompleteFn;
|
|
22
|
+
/** Optional assistant texts for context (truncated; never written verbatim). */
|
|
23
|
+
readonly assistantTexts?: readonly string[];
|
|
24
|
+
}
|
|
18
25
|
/**
|
|
19
26
|
* Evidence from the user's turn text only. Assistant prose is not promoted
|
|
20
27
|
* into durable notes. Empty when the memory tool already wrote this turn.
|
|
@@ -34,4 +41,18 @@ export declare function writeReusableNotesAfterTurn(store: CuratedMemoryStore, i
|
|
|
34
41
|
* (Hermes-style room-making). Does not refresh the frozen system-prompt snapshot.
|
|
35
42
|
*/
|
|
36
43
|
export declare function consolidateCuratedMemoryPhase1(store: CuratedMemoryStore, input: SessionEndConsolidateInput): Promise<TurnNoteWriteResult>;
|
|
44
|
+
/** Prompt for Phase2 extract — short facts only, JSON array reply. */
|
|
45
|
+
export declare function buildPhase2ExtractPrompt(input: {
|
|
46
|
+
readonly userTexts: readonly string[];
|
|
47
|
+
readonly assistantTexts?: readonly string[];
|
|
48
|
+
readonly existingEntries: readonly string[];
|
|
49
|
+
}): string;
|
|
50
|
+
/** Parse a model reply into note strings (JSON array, or line bullets). */
|
|
51
|
+
export declare function parsePhase2Notes(raw: string): string[];
|
|
52
|
+
/**
|
|
53
|
+
* Session-end Phase2: optional LLM extract of short facts into MEMORY.md.
|
|
54
|
+
* Failures (complete throws / empty parse) return `{ written: [] }` — callers
|
|
55
|
+
* should still run Phase1. Does not refresh the frozen prompt snapshot.
|
|
56
|
+
*/
|
|
57
|
+
export declare function consolidateCuratedMemoryPhase2(store: CuratedMemoryStore, input: SessionEndPhase2Input): Promise<TurnNoteWriteResult>;
|
|
37
58
|
//# sourceMappingURL=write-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-path.d.ts","sourceRoot":"","sources":["../src/write-path.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"write-path.d.ts","sourceRoot":"","sources":["../src/write-path.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAarD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,uFAAuF;AACvF,MAAM,WAAW,0BAA0B;IACzC,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,qBAAsB,SAAQ,0BAA0B;IACvE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,gFAAgF;IAChF,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAoDD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CAMnE;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAST;AAiCD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAQ9B;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAY9B;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,GAAG,MAAM,CAgCT;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BtD;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CA4B9B"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Post-turn write path + session-end Phase1 consolidate into curated MEMORY.md.
|
|
2
|
+
* Post-turn write path + session-end Phase1/Phase2 consolidate into curated MEMORY.md.
|
|
3
3
|
* Durable user notes only. Disk writes do not refresh the frozen prompt.
|
|
4
4
|
* Not a vector store and not the Mnemon document library.
|
|
5
5
|
*/
|
|
6
6
|
import { redactSecrets } from "@xrkseek/secrets";
|
|
7
7
|
const MAX_NOTES_PER_TURN = 3;
|
|
8
8
|
const MAX_NOTES_PER_SESSION_END = 12;
|
|
9
|
+
const MAX_NOTES_PHASE2 = 8;
|
|
9
10
|
const MAX_NOTE_CHARS = 280;
|
|
10
11
|
const EXPLICIT = /^(?:remember|memory|note|记住|备注)\s*[::]\s*(.+)$/i;
|
|
11
12
|
const REMEMBER_THAT = /\bremember that\s+(.+)$/i;
|
|
@@ -82,6 +83,35 @@ export function noteCoveredByEntries(note, entries) {
|
|
|
82
83
|
}
|
|
83
84
|
return false;
|
|
84
85
|
}
|
|
86
|
+
async function appendNotesWithSoftTrim(store, notes) {
|
|
87
|
+
const written = [];
|
|
88
|
+
for (const note of notes) {
|
|
89
|
+
const entries = await Promise.resolve(store.listEntries("memory"));
|
|
90
|
+
if (noteCoveredByEntries(note, entries))
|
|
91
|
+
continue;
|
|
92
|
+
let result = await Promise.resolve(store.add("memory", note));
|
|
93
|
+
let softTrimAttempts = 0;
|
|
94
|
+
while (!result.success &&
|
|
95
|
+
typeof result.error === "string" &&
|
|
96
|
+
/exceed the limit/i.test(result.error) &&
|
|
97
|
+
softTrimAttempts < 3) {
|
|
98
|
+
softTrimAttempts += 1;
|
|
99
|
+
const live = await Promise.resolve(store.listEntries("memory"));
|
|
100
|
+
if (live.length === 0)
|
|
101
|
+
break;
|
|
102
|
+
const oldest = live[0];
|
|
103
|
+
const removed = await Promise.resolve(store.remove("memory", oldest));
|
|
104
|
+
if (!removed.success)
|
|
105
|
+
break;
|
|
106
|
+
result = await Promise.resolve(store.add("memory", note));
|
|
107
|
+
}
|
|
108
|
+
if (!result.success)
|
|
109
|
+
break;
|
|
110
|
+
if (result.message === "Entry added.")
|
|
111
|
+
written.push(note);
|
|
112
|
+
}
|
|
113
|
+
return written;
|
|
114
|
+
}
|
|
85
115
|
/**
|
|
86
116
|
* Append extracted notes to MEMORY.md. Failures (char cap, drift) stop the
|
|
87
117
|
* batch. The store snapshot from session start is left unchanged.
|
|
@@ -112,32 +142,105 @@ export async function consolidateCuratedMemoryPhase1(store, input) {
|
|
|
112
142
|
break;
|
|
113
143
|
collectFromUserText(text, found, seen, max);
|
|
114
144
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
145
|
+
return { written: await appendNotesWithSoftTrim(store, found) };
|
|
146
|
+
}
|
|
147
|
+
/** Prompt for Phase2 extract — short facts only, JSON array reply. */
|
|
148
|
+
export function buildPhase2ExtractPrompt(input) {
|
|
149
|
+
const users = input.userTexts
|
|
150
|
+
.map((t) => t.trim())
|
|
151
|
+
.filter(Boolean)
|
|
152
|
+
.slice(-20)
|
|
153
|
+
.map((t, i) => `${i + 1}. ${t.slice(0, 400)}`)
|
|
154
|
+
.join("\n");
|
|
155
|
+
const assistants = (input.assistantTexts ?? [])
|
|
156
|
+
.map((t) => t.trim())
|
|
157
|
+
.filter(Boolean)
|
|
158
|
+
.slice(-8)
|
|
159
|
+
.map((t, i) => `${i + 1}. ${t.slice(0, 240)}`)
|
|
160
|
+
.join("\n");
|
|
161
|
+
const existing = input.existingEntries
|
|
162
|
+
.slice(0, 40)
|
|
163
|
+
.map((e) => `- ${e.slice(0, 200)}`)
|
|
164
|
+
.join("\n");
|
|
165
|
+
return [
|
|
166
|
+
"Extract durable cross-session facts from this chat for MEMORY.md.",
|
|
167
|
+
"Return ONLY a JSON array of short strings (max 8). No markdown fences.",
|
|
168
|
+
"Rules: user preferences and lasting conventions only; no secrets, todos,",
|
|
169
|
+
"one-off task status, or assistant speculation. Skip anything already listed.",
|
|
170
|
+
"",
|
|
171
|
+
"Existing MEMORY entries:",
|
|
172
|
+
existing || "(none)",
|
|
173
|
+
"",
|
|
174
|
+
"User turns:",
|
|
175
|
+
users || "(none)",
|
|
176
|
+
"",
|
|
177
|
+
"Assistant turns (context only — do not copy):",
|
|
178
|
+
assistants || "(none)",
|
|
179
|
+
].join("\n");
|
|
180
|
+
}
|
|
181
|
+
/** Parse a model reply into note strings (JSON array, or line bullets). */
|
|
182
|
+
export function parsePhase2Notes(raw) {
|
|
183
|
+
const text = raw.replace(/^\uFEFF/, "").trim();
|
|
184
|
+
if (!text)
|
|
185
|
+
return [];
|
|
186
|
+
const fenced = text.match(/```(?:json)?\s*([\s\S]*?)```/i);
|
|
187
|
+
const body = (fenced?.[1] ?? text).trim();
|
|
188
|
+
try {
|
|
189
|
+
const start = body.indexOf("[");
|
|
190
|
+
const end = body.lastIndexOf("]");
|
|
191
|
+
if (start >= 0 && end > start) {
|
|
192
|
+
const parsed = JSON.parse(body.slice(start, end + 1));
|
|
193
|
+
if (Array.isArray(parsed)) {
|
|
194
|
+
return parsed
|
|
195
|
+
.filter((row) => typeof row === "string")
|
|
196
|
+
.map((row) => usable(row))
|
|
197
|
+
.filter((row) => row !== undefined)
|
|
198
|
+
.slice(0, MAX_NOTES_PHASE2);
|
|
199
|
+
}
|
|
135
200
|
}
|
|
136
|
-
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
/* fall through to line parse */
|
|
204
|
+
}
|
|
205
|
+
const lines = [];
|
|
206
|
+
for (const line of body.split(/\n+/)) {
|
|
207
|
+
const cleaned = line.replace(/^[-*•\d.)\s]+/, "").trim();
|
|
208
|
+
const note = usable(cleaned);
|
|
209
|
+
if (note)
|
|
210
|
+
lines.push(note);
|
|
211
|
+
if (lines.length >= MAX_NOTES_PHASE2)
|
|
137
212
|
break;
|
|
138
|
-
if (result.message === "Entry added.")
|
|
139
|
-
written.push(note);
|
|
140
213
|
}
|
|
141
|
-
return
|
|
214
|
+
return lines;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Session-end Phase2: optional LLM extract of short facts into MEMORY.md.
|
|
218
|
+
* Failures (complete throws / empty parse) return `{ written: [] }` — callers
|
|
219
|
+
* should still run Phase1. Does not refresh the frozen prompt snapshot.
|
|
220
|
+
*/
|
|
221
|
+
export async function consolidateCuratedMemoryPhase2(store, input) {
|
|
222
|
+
if (input.userTexts.length === 0)
|
|
223
|
+
return { written: [] };
|
|
224
|
+
const existing = await Promise.resolve(store.listEntries("memory"));
|
|
225
|
+
let raw;
|
|
226
|
+
try {
|
|
227
|
+
raw = await Promise.resolve(input.complete(buildPhase2ExtractPrompt({
|
|
228
|
+
userTexts: input.userTexts,
|
|
229
|
+
...(input.assistantTexts
|
|
230
|
+
? { assistantTexts: input.assistantTexts }
|
|
231
|
+
: {}),
|
|
232
|
+
existingEntries: existing,
|
|
233
|
+
})));
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return { written: [] };
|
|
237
|
+
}
|
|
238
|
+
const notes = parsePhase2Notes(String(raw ?? ""));
|
|
239
|
+
if (notes.length === 0)
|
|
240
|
+
return { written: [] };
|
|
241
|
+
const max = Math.min(Math.max(1, input.maxNotes ?? MAX_NOTES_PHASE2), MAX_NOTES_PHASE2);
|
|
242
|
+
return {
|
|
243
|
+
written: await appendNotesWithSoftTrim(store, notes.slice(0, max)),
|
|
244
|
+
};
|
|
142
245
|
}
|
|
143
246
|
//# sourceMappingURL=write-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-path.js","sourceRoot":"","sources":["../src/write-path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,QAAQ,GACZ,iDAAiD,CAAC;AACpD,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,UAAU,GACd,0FAA0F,CAAC;
|
|
1
|
+
{"version":3,"file":"write-path.js","sourceRoot":"","sources":["../src/write-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,27 @@
|
|
|
1
|
-
# @xrkseek/exec-video-gen
|
|
2
|
-
|
|
3
|
-
Text-to-video Provider seam for the model tool surface.
|
|
4
|
-
|
|
5
|
-
- **Definition**: `VideoGenService` — `create` · `get` · `content` (
|
|
6
|
-
- **Provider**: `createMemoryVideoGenProvider` · `createOpenAiVideoGenProvider` · Host-injected
|
|
7
|
-
- **Consumer**: `createVideoGenTools` → `video_generate`
|
|
8
|
-
|
|
9
|
-
Renders are asynchronous, so the seam exposes job semantics instead of one-shot bytes:
|
|
10
|
-
`create` returns a `jobId`, `get` polls status, and `content` downloads the MP4 once
|
|
11
|
-
`status=completed` (an early `content` call raises `VIDEO_GEN_NOT_READY`).
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
# @xrkseek/exec-video-gen
|
|
2
|
+
|
|
3
|
+
Text-to-video / image-to-video Provider seam for the model tool surface.
|
|
4
|
+
|
|
5
|
+
- **Definition**: `VideoGenService` — `create` · `get` · `content` (+ optional `capabilities`)
|
|
6
|
+
- **Provider**: `createMemoryVideoGenProvider` · `createOpenAiVideoGenProvider` · Host-injected
|
|
7
|
+
- **Consumer**: `createVideoGenTools` → `video_generate` (schema rebuilt from `capabilities()`)
|
|
8
|
+
|
|
9
|
+
Renders are asynchronous, so the seam exposes job semantics instead of one-shot bytes:
|
|
10
|
+
`create` returns a `jobId`, `get` polls status, and `content` downloads the MP4 once
|
|
11
|
+
`status=completed` (an early `content` call raises `VIDEO_GEN_NOT_READY`).
|
|
12
|
+
|
|
13
|
+
**i2v**: pass a decoded `firstFrame` (tools resolve `first_frame` / `image_url` /
|
|
14
|
+
`reference_attachment_ids`). OpenAI uploads it as multipart `input_reference`.
|
|
15
|
+
|
|
16
|
+
**edit / extend**: `create({ kind: "edit"|"extend", sourceVideoId, prompt })` →
|
|
17
|
+
`POST /videos/edits` · `/videos/extensions`. Tools expose `action=edit|extend|catalog`.
|
|
18
|
+
|
|
19
|
+
**Family catalog**: `capabilities().families` (Hermes fal-style; OpenAI lists sora-2 / sora-2-pro).
|
|
20
|
+
|
|
21
|
+
Env: `XRK_VIDEO_GEN=memory` | `XRK_VIDEO_GEN=1` + `OPENAI_API_KEY` / `XRK_VIDEO_GEN_OPENAI_KEY`
|
|
22
|
+
(optional `XRK_VIDEO_GEN_BASE_URL` · `XRK_VIDEO_GEN_MODEL`).
|
|
23
|
+
|
|
24
|
+
Video bytes are never inlined into tool text; with an `AttachmentStore` the finished MP4 is
|
|
25
|
+
persisted via `saveFile` and returned as an attachment id.
|
|
26
|
+
|
|
27
|
+
See [docs/video-gen.md](../../../docs/video-gen.md) · [docs/seams.md](../../../docs/seams.md).
|