@askdkc/kiokuko 0.1.17 → 0.1.19
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/README.ja.md +91 -112
- package/README.ko.md +90 -102
- package/README.md +103 -262
- package/README.zh-CN.md +88 -102
- package/dist/agent-file/atomic-write.d.ts +90 -3
- package/dist/agent-file/atomic-write.d.ts.map +1 -1
- package/dist/agent-file/atomic-write.js +990 -14
- package/dist/agent-file/atomic-write.js.map +1 -1
- package/dist/agent-file/managed-block.d.ts +12 -1
- package/dist/agent-file/managed-block.d.ts.map +1 -1
- package/dist/agent-file/managed-block.js +49 -4
- package/dist/agent-file/managed-block.js.map +1 -1
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.d.ts.map +1 -1
- package/dist/agent-file/render.js +10 -7
- package/dist/agent-file/render.js.map +1 -1
- package/dist/akinator/agent-task.d.ts +11 -22
- package/dist/akinator/agent-task.d.ts.map +1 -1
- package/dist/akinator/agent-task.js +454 -99
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/akinator/capabilities.d.ts +18 -6
- package/dist/akinator/capabilities.d.ts.map +1 -1
- package/dist/akinator/capabilities.js +72 -35
- package/dist/akinator/capabilities.js.map +1 -1
- package/dist/akinator/capability-binding.d.ts +11 -0
- package/dist/akinator/capability-binding.d.ts.map +1 -0
- package/dist/akinator/capability-binding.js +56 -0
- package/dist/akinator/capability-binding.js.map +1 -0
- package/dist/akinator/domain.js +2 -2
- package/dist/akinator/domain.js.map +1 -1
- package/dist/akinator/knowledge-path.d.ts.map +1 -1
- package/dist/akinator/knowledge-path.js +409 -39
- package/dist/akinator/knowledge-path.js.map +1 -1
- package/dist/akinator/orchestrator.d.ts +3 -4
- package/dist/akinator/orchestrator.d.ts.map +1 -1
- package/dist/akinator/orchestrator.js +1 -4
- package/dist/akinator/orchestrator.js.map +1 -1
- package/dist/akinator/service.d.ts +0 -4
- package/dist/akinator/service.d.ts.map +1 -1
- package/dist/akinator/service.js +19 -35
- package/dist/akinator/service.js.map +1 -1
- package/dist/akinator/skill-discovery-attempt.d.ts +20 -0
- package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -0
- package/dist/akinator/skill-discovery-attempt.js +390 -0
- package/dist/akinator/skill-discovery-attempt.js.map +1 -0
- package/dist/akinator/store.d.ts.map +1 -1
- package/dist/akinator/store.js +107 -52
- package/dist/akinator/store.js.map +1 -1
- package/dist/akinator/types.d.ts +0 -12
- package/dist/akinator/types.d.ts.map +1 -1
- package/dist/bin/kiokuko.js +0 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +534 -148
- package/dist/cli.js.map +1 -1
- package/dist/client/server-client.d.ts +5 -3
- package/dist/client/server-client.d.ts.map +1 -1
- package/dist/client/server-client.js +486 -181
- package/dist/client/server-client.js.map +1 -1
- package/dist/commands/agent.d.ts +2 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +861 -86
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/backup.d.ts +2 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +64 -8
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +70 -26
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/export.d.ts +0 -4
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +191 -32
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts +10 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +592 -113
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +19 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +569 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/purge.d.ts.map +1 -1
- package/dist/commands/purge.js +3 -0
- package/dist/commands/purge.js.map +1 -1
- package/dist/commands/setup.d.ts +34 -8
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +418 -86
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skills.d.ts +9 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +317 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/use.d.ts +10 -2
- package/dist/commands/use.d.ts.map +1 -1
- package/dist/commands/use.js +851 -73
- package/dist/commands/use.js.map +1 -1
- package/dist/config/paths.d.ts +11 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +64 -29
- package/dist/config/paths.js.map +1 -1
- package/dist/config/project-config.d.ts +1 -0
- package/dist/config/project-config.d.ts.map +1 -1
- package/dist/config/project-config.js +70 -32
- package/dist/config/project-config.js.map +1 -1
- package/dist/context/broker.d.ts +28 -14
- package/dist/context/broker.d.ts.map +1 -1
- package/dist/context/broker.js +604 -145
- package/dist/context/broker.js.map +1 -1
- package/dist/context/delivery.d.ts +6 -21
- package/dist/context/delivery.d.ts.map +1 -1
- package/dist/context/delivery.js +196 -147
- package/dist/context/delivery.js.map +1 -1
- package/dist/context/feedback.d.ts +11 -12
- package/dist/context/feedback.d.ts.map +1 -1
- package/dist/context/feedback.js +229 -261
- package/dist/context/feedback.js.map +1 -1
- package/dist/context/ranking.d.ts +1 -12
- package/dist/context/ranking.d.ts.map +1 -1
- package/dist/context/ranking.js +13 -4
- package/dist/context/ranking.js.map +1 -1
- package/dist/context/recommendations.d.ts +0 -5
- package/dist/context/recommendations.d.ts.map +1 -1
- package/dist/context/recommendations.js +0 -1
- package/dist/context/recommendations.js.map +1 -1
- package/dist/context/run-state.d.ts +26 -0
- package/dist/context/run-state.d.ts.map +1 -0
- package/dist/context/run-state.js +399 -0
- package/dist/context/run-state.js.map +1 -0
- package/dist/context/scoped-broker.d.ts +17 -5
- package/dist/context/scoped-broker.d.ts.map +1 -1
- package/dist/context/scoped-broker.js +512 -106
- package/dist/context/scoped-broker.js.map +1 -1
- package/dist/context/selection-state.d.ts +19 -0
- package/dist/context/selection-state.d.ts.map +1 -0
- package/dist/context/selection-state.js +250 -0
- package/dist/context/selection-state.js.map +1 -0
- package/dist/db/adapter.d.ts +5 -3
- package/dist/db/adapter.d.ts.map +1 -1
- package/dist/db/adapter.js +6 -3
- package/dist/db/adapter.js.map +1 -1
- package/dist/db/capabilities.d.ts.map +1 -1
- package/dist/db/capabilities.js +34 -16
- package/dist/db/capabilities.js.map +1 -1
- package/dist/db/connection.d.ts +8 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +55 -26
- package/dist/db/connection.js.map +1 -1
- package/dist/db/migrate.d.ts +28 -7
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +106 -78
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/sqlite-retry.d.ts +11 -0
- package/dist/db/sqlite-retry.d.ts.map +1 -0
- package/dist/db/sqlite-retry.js +66 -0
- package/dist/db/sqlite-retry.js.map +1 -0
- package/dist/db/transaction.d.ts +13 -0
- package/dist/db/transaction.d.ts.map +1 -1
- package/dist/db/transaction.js +53 -24
- package/dist/db/transaction.js.map +1 -1
- package/dist/db/upgrade-backup.d.ts +58 -2
- package/dist/db/upgrade-backup.d.ts.map +1 -1
- package/dist/db/upgrade-backup.js +757 -28
- package/dist/db/upgrade-backup.js.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/gateway/agent-service.d.ts +4 -1
- package/dist/gateway/agent-service.d.ts.map +1 -1
- package/dist/gateway/agent-service.js +71 -58
- package/dist/gateway/agent-service.js.map +1 -1
- package/dist/gateway/checkpoint-service.d.ts +1 -0
- package/dist/gateway/checkpoint-service.d.ts.map +1 -1
- package/dist/gateway/checkpoint-service.js +47 -24
- package/dist/gateway/checkpoint-service.js.map +1 -1
- package/dist/ledger/archive.d.ts +1 -4
- package/dist/ledger/archive.d.ts.map +1 -1
- package/dist/ledger/archive.js +77 -39
- package/dist/ledger/archive.js.map +1 -1
- package/dist/ledger/maintenance.d.ts +0 -11
- package/dist/ledger/maintenance.d.ts.map +1 -1
- package/dist/ledger/maintenance.js +24 -40
- package/dist/ledger/maintenance.js.map +1 -1
- package/dist/ledger/projection.d.ts +0 -1
- package/dist/ledger/projection.d.ts.map +1 -1
- package/dist/ledger/projection.js.map +1 -1
- package/dist/ledger/promotion.d.ts +0 -9
- package/dist/ledger/promotion.d.ts.map +1 -1
- package/dist/ledger/promotion.js.map +1 -1
- package/dist/ledger/query.d.ts +1 -15
- package/dist/ledger/query.d.ts.map +1 -1
- package/dist/ledger/query.js.map +1 -1
- package/dist/ledger/store.d.ts +0 -1
- package/dist/ledger/store.d.ts.map +1 -1
- package/dist/ledger/store.js +11 -8
- package/dist/ledger/store.js.map +1 -1
- package/dist/ledger/types.d.ts +0 -4
- package/dist/ledger/types.d.ts.map +1 -1
- package/dist/ledger/types.js.map +1 -1
- package/dist/ledger/validate.d.ts.map +1 -1
- package/dist/ledger/validate.js +0 -5
- package/dist/ledger/validate.js.map +1 -1
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +105 -54
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/audit.d.ts +0 -1
- package/dist/memory/audit.d.ts.map +1 -1
- package/dist/memory/audit.js +0 -1
- package/dist/memory/audit.js.map +1 -1
- package/dist/memory/curator.d.ts.map +1 -1
- package/dist/memory/curator.js +172 -96
- package/dist/memory/curator.js.map +1 -1
- package/dist/memory/entries.d.ts +12 -2
- package/dist/memory/entries.d.ts.map +1 -1
- package/dist/memory/entries.js +198 -114
- package/dist/memory/entries.js.map +1 -1
- package/dist/memory/federated-retrieval.d.ts +12 -1
- package/dist/memory/federated-retrieval.d.ts.map +1 -1
- package/dist/memory/federated-retrieval.js +183 -70
- package/dist/memory/federated-retrieval.js.map +1 -1
- package/dist/memory/hybrid-retrieval.d.ts +5 -11
- package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
- package/dist/memory/hybrid-retrieval.js +78 -58
- package/dist/memory/hybrid-retrieval.js.map +1 -1
- package/dist/memory/lifecycle.d.ts.map +1 -1
- package/dist/memory/lifecycle.js +17 -13
- package/dist/memory/lifecycle.js.map +1 -1
- package/dist/memory/rebuild-search.d.ts +5 -0
- package/dist/memory/rebuild-search.d.ts.map +1 -1
- package/dist/memory/rebuild-search.js +101 -76
- package/dist/memory/rebuild-search.js.map +1 -1
- package/dist/memory/retrieval-query.d.ts +0 -5
- package/dist/memory/retrieval-query.d.ts.map +1 -1
- package/dist/memory/retrieval-query.js +0 -5
- package/dist/memory/retrieval-query.js.map +1 -1
- package/dist/memory/retrieval.d.ts.map +1 -1
- package/dist/memory/retrieval.js +25 -131
- package/dist/memory/retrieval.js.map +1 -1
- package/dist/memory/revisions.d.ts +76 -1
- package/dist/memory/revisions.d.ts.map +1 -1
- package/dist/memory/revisions.js +539 -35
- package/dist/memory/revisions.js.map +1 -1
- package/dist/memory/scoped-memory.d.ts +16 -1
- package/dist/memory/scoped-memory.d.ts.map +1 -1
- package/dist/memory/scoped-memory.js +240 -107
- package/dist/memory/scoped-memory.js.map +1 -1
- package/dist/memory/secrets.d.ts +2 -0
- package/dist/memory/secrets.d.ts.map +1 -1
- package/dist/memory/secrets.js +36 -0
- package/dist/memory/secrets.js.map +1 -1
- package/dist/memory/structured-memory.d.ts +3 -2
- package/dist/memory/structured-memory.d.ts.map +1 -1
- package/dist/memory/structured-memory.js +54 -22
- package/dist/memory/structured-memory.js.map +1 -1
- package/dist/memory/workspaces.d.ts +9 -0
- package/dist/memory/workspaces.d.ts.map +1 -1
- package/dist/memory/workspaces.js +67 -0
- package/dist/memory/workspaces.js.map +1 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +7 -0
- package/dist/package-version.js.map +1 -0
- package/dist/repository/binding.d.ts +5 -0
- package/dist/repository/binding.d.ts.map +1 -1
- package/dist/repository/binding.js +117 -17
- package/dist/repository/binding.js.map +1 -1
- package/dist/repository/framework-version.d.ts +8 -0
- package/dist/repository/framework-version.d.ts.map +1 -0
- package/dist/repository/framework-version.js +29 -0
- package/dist/repository/framework-version.js.map +1 -0
- package/dist/repository/identity-value.d.ts +4 -0
- package/dist/repository/identity-value.d.ts.map +1 -0
- package/dist/repository/identity-value.js +24 -0
- package/dist/repository/identity-value.js.map +1 -0
- package/dist/repository/identity.d.ts.map +1 -1
- package/dist/repository/identity.js +2 -0
- package/dist/repository/identity.js.map +1 -1
- package/dist/repository/project-fingerprint.d.ts +14 -2
- package/dist/repository/project-fingerprint.d.ts.map +1 -1
- package/dist/repository/project-fingerprint.js +312 -33
- package/dist/repository/project-fingerprint.js.map +1 -1
- package/dist/repository/remote-url.d.ts +0 -1
- package/dist/repository/remote-url.d.ts.map +1 -1
- package/dist/repository/remote-url.js +0 -1
- package/dist/repository/remote-url.js.map +1 -1
- package/dist/runtime-version.d.ts +2 -1
- package/dist/runtime-version.d.ts.map +1 -1
- package/dist/runtime-version.js +21 -4
- package/dist/runtime-version.js.map +1 -1
- package/dist/serialization/boundary-json.d.ts +20 -0
- package/dist/serialization/boundary-json.d.ts.map +1 -0
- package/dist/serialization/boundary-json.js +129 -0
- package/dist/serialization/boundary-json.js.map +1 -0
- package/dist/serialization/envelope.js +1 -1
- package/dist/serialization/envelope.js.map +1 -1
- package/dist/serialization/validate.d.ts +7 -0
- package/dist/serialization/validate.d.ts.map +1 -1
- package/dist/serialization/validate.js +53 -13
- package/dist/serialization/validate.js.map +1 -1
- package/dist/server/app.js +1 -1
- package/dist/server/app.js.map +1 -1
- package/dist/server/http.d.ts +4 -3
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +90 -50
- package/dist/server/http.js.map +1 -1
- package/dist/server/idempotency.d.ts +0 -6
- package/dist/server/idempotency.d.ts.map +1 -1
- package/dist/server/idempotency.js.map +1 -1
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/router.js +21 -4
- package/dist/server/router.js.map +1 -1
- package/dist/server/routes/agent-capability-gate.d.ts +40 -0
- package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
- package/dist/server/routes/agent-capability-gate.js +182 -0
- package/dist/server/routes/agent-capability-gate.js.map +1 -0
- package/dist/server/routes/agent-events.d.ts.map +1 -1
- package/dist/server/routes/agent-events.js +8 -1
- package/dist/server/routes/agent-events.js.map +1 -1
- package/dist/server/routes/agent-intake.d.ts.map +1 -1
- package/dist/server/routes/agent-intake.js +10 -2
- package/dist/server/routes/agent-intake.js.map +1 -1
- package/dist/server/routes/agent-promotions.d.ts.map +1 -1
- package/dist/server/routes/agent-promotions.js +5 -2
- package/dist/server/routes/agent-promotions.js.map +1 -1
- package/dist/server/routes/agent-runs.d.ts.map +1 -1
- package/dist/server/routes/agent-runs.js +18 -4
- package/dist/server/routes/agent-runs.js.map +1 -1
- package/dist/server/routes/request-binding.d.ts +5 -0
- package/dist/server/routes/request-binding.d.ts.map +1 -0
- package/dist/server/routes/request-binding.js +49 -0
- package/dist/server/routes/request-binding.js.map +1 -0
- package/dist/server/routes/task5-support.d.ts +1 -8
- package/dist/server/routes/task5-support.d.ts.map +1 -1
- package/dist/server/routes/task5-support.js +1 -17
- package/dist/server/routes/task5-support.js.map +1 -1
- package/dist/server/routes/task5.d.ts.map +1 -1
- package/dist/server/routes/task5.js +106 -36
- package/dist/server/routes/task5.js.map +1 -1
- package/dist/server/write-queue.js +2 -2
- package/dist/server/write-queue.js.map +1 -1
- package/dist/setup/claude-config.d.ts +2 -1
- package/dist/setup/claude-config.d.ts.map +1 -1
- package/dist/setup/claude-config.js +54 -4
- package/dist/setup/claude-config.js.map +1 -1
- package/dist/setup/client-detection.d.ts +7 -2
- package/dist/setup/client-detection.d.ts.map +1 -1
- package/dist/setup/client-detection.js +27 -9
- package/dist/setup/client-detection.js.map +1 -1
- package/dist/setup/hermes-config.d.ts +2 -1
- package/dist/setup/hermes-config.d.ts.map +1 -1
- package/dist/setup/hermes-config.js +53 -12
- package/dist/setup/hermes-config.js.map +1 -1
- package/dist/setup/legacy-client-cleanup.d.ts +6 -0
- package/dist/setup/legacy-client-cleanup.d.ts.map +1 -0
- package/dist/setup/legacy-client-cleanup.js +152 -0
- package/dist/setup/legacy-client-cleanup.js.map +1 -0
- package/dist/setup/managed-text.d.ts.map +1 -1
- package/dist/setup/managed-text.js +11 -1
- package/dist/setup/managed-text.js.map +1 -1
- package/dist/setup/opencode-config.d.ts +2 -1
- package/dist/setup/opencode-config.d.ts.map +1 -1
- package/dist/setup/opencode-config.js +57 -5
- package/dist/setup/opencode-config.js.map +1 -1
- package/dist/setup/render.d.ts +2 -1
- package/dist/setup/render.d.ts.map +1 -1
- package/dist/setup/render.js +91 -17
- package/dist/setup/render.js.map +1 -1
- package/dist/setup/standard-skills.d.ts +16 -2
- package/dist/setup/standard-skills.d.ts.map +1 -1
- package/dist/setup/standard-skills.js +37 -13
- package/dist/setup/standard-skills.js.map +1 -1
- package/dist/setup/strict-json.d.ts +7 -0
- package/dist/setup/strict-json.d.ts.map +1 -0
- package/dist/setup/strict-json.js +98 -0
- package/dist/setup/strict-json.js.map +1 -0
- package/dist/setup/strict-toml.d.ts +7 -0
- package/dist/setup/strict-toml.d.ts.map +1 -0
- package/dist/setup/strict-toml.js +470 -0
- package/dist/setup/strict-toml.js.map +1 -0
- package/dist/skills/cache.d.ts +15 -0
- package/dist/skills/cache.d.ts.map +1 -0
- package/dist/skills/cache.js +19 -0
- package/dist/skills/cache.js.map +1 -0
- package/dist/skills/candidate-ranking.d.ts +15 -0
- package/dist/skills/candidate-ranking.d.ts.map +1 -0
- package/dist/skills/candidate-ranking.js +52 -0
- package/dist/skills/candidate-ranking.js.map +1 -0
- package/dist/skills/chunking.d.ts +11 -0
- package/dist/skills/chunking.d.ts.map +1 -0
- package/dist/skills/chunking.js +291 -0
- package/dist/skills/chunking.js.map +1 -0
- package/dist/skills/config.d.ts +19 -0
- package/dist/skills/config.d.ts.map +1 -0
- package/dist/skills/config.js +103 -0
- package/dist/skills/config.js.map +1 -0
- package/dist/skills/discovery-service.d.ts +26 -0
- package/dist/skills/discovery-service.d.ts.map +1 -0
- package/dist/skills/discovery-service.js +921 -0
- package/dist/skills/discovery-service.js.map +1 -0
- package/dist/skills/external-transport.d.ts +2 -0
- package/dist/skills/external-transport.d.ts.map +1 -0
- package/dist/skills/external-transport.js +30 -0
- package/dist/skills/external-transport.js.map +1 -0
- package/dist/skills/find.d.ts +16 -0
- package/dist/skills/find.d.ts.map +1 -0
- package/dist/skills/find.js +58 -0
- package/dist/skills/find.js.map +1 -0
- package/dist/skills/gap-detection.d.ts +23 -0
- package/dist/skills/gap-detection.d.ts.map +1 -0
- package/dist/skills/gap-detection.js +62 -0
- package/dist/skills/gap-detection.js.map +1 -0
- package/dist/skills/import-preparation.d.ts +4 -0
- package/dist/skills/import-preparation.d.ts.map +1 -0
- package/dist/skills/import-preparation.js +20 -0
- package/dist/skills/import-preparation.js.map +1 -0
- package/dist/skills/materialization-authority.d.ts +11 -0
- package/dist/skills/materialization-authority.d.ts.map +1 -0
- package/dist/skills/materialization-authority.js +92 -0
- package/dist/skills/materialization-authority.js.map +1 -0
- package/dist/skills/materialization-service.d.ts +22 -0
- package/dist/skills/materialization-service.d.ts.map +1 -0
- package/dist/skills/materialization-service.js +101 -0
- package/dist/skills/materialization-service.js.map +1 -0
- package/dist/skills/official-catalog.d.ts +31 -0
- package/dist/skills/official-catalog.d.ts.map +1 -0
- package/dist/skills/official-catalog.js +110 -0
- package/dist/skills/official-catalog.js.map +1 -0
- package/dist/skills/providers/schema.d.ts +30 -0
- package/dist/skills/providers/schema.d.ts.map +1 -0
- package/dist/skills/providers/schema.js +354 -0
- package/dist/skills/providers/schema.js.map +1 -0
- package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
- package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
- package/dist/skills/providers/skills-sh-compat.js +71 -0
- package/dist/skills/providers/skills-sh-compat.js.map +1 -0
- package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
- package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
- package/dist/skills/providers/skills-sh-v1.js +134 -0
- package/dist/skills/providers/skills-sh-v1.js.map +1 -0
- package/dist/skills/query-builder.d.ts +18 -0
- package/dist/skills/query-builder.d.ts.map +1 -0
- package/dist/skills/query-builder.js +93 -0
- package/dist/skills/query-builder.js.map +1 -0
- package/dist/skills/source/errors.d.ts +9 -0
- package/dist/skills/source/errors.d.ts.map +1 -0
- package/dist/skills/source/errors.js +15 -0
- package/dist/skills/source/errors.js.map +1 -0
- package/dist/skills/source/frontmatter.d.ts +9 -0
- package/dist/skills/source/frontmatter.d.ts.map +1 -0
- package/dist/skills/source/frontmatter.js +77 -0
- package/dist/skills/source/frontmatter.js.map +1 -0
- package/dist/skills/source/github-fetcher.d.ts +20 -0
- package/dist/skills/source/github-fetcher.d.ts.map +1 -0
- package/dist/skills/source/github-fetcher.js +292 -0
- package/dist/skills/source/github-fetcher.js.map +1 -0
- package/dist/skills/source/snapshot-validator.d.ts +28 -0
- package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
- package/dist/skills/source/snapshot-validator.js +186 -0
- package/dist/skills/source/snapshot-validator.js.map +1 -0
- package/dist/skills/store.d.ts +181 -0
- package/dist/skills/store.d.ts.map +1 -0
- package/dist/skills/store.js +1710 -0
- package/dist/skills/store.js.map +1 -0
- package/dist/skills/types.d.ts +169 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/web/i18n.d.ts +32 -0
- package/dist/web/i18n.d.ts.map +1 -1
- package/dist/web/i18n.js +128 -0
- package/dist/web/i18n.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +386 -38
- package/dist/web/server.js.map +1 -1
- package/dist/web/ui.d.ts +4 -0
- package/dist/web/ui.d.ts.map +1 -1
- package/dist/web/ui.js +382 -6
- package/dist/web/ui.js.map +1 -1
- package/migrations/009_external_skill_discovery.sql +126 -0
- package/package.json +4 -3
- package/skills/kiokuko-single-purpose-functions/SKILL.md +288 -0
- package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
- package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
- package/skills/kiokuko-ui-design-soul/SKILL.md +1186 -28
- package/templates/AGENTS.md +8 -7
- package/dist/client/runtime-discovery.d.ts +0 -15
- package/dist/client/runtime-discovery.d.ts.map +0 -1
- package/dist/client/runtime-discovery.js +0 -45
- package/dist/client/runtime-discovery.js.map +0 -1
- package/dist/commands/call.d.ts +0 -7
- package/dist/commands/call.d.ts.map +0 -1
- package/dist/commands/call.js +0 -10
- package/dist/commands/call.js.map +0 -1
- package/dist/commands/link.d.ts +0 -6
- package/dist/commands/link.d.ts.map +0 -1
- package/dist/commands/link.js +0 -6
- package/dist/commands/link.js.map +0 -1
- package/dist/commands/promote.d.ts +0 -6
- package/dist/commands/promote.d.ts.map +0 -1
- package/dist/commands/promote.js +0 -6
- package/dist/commands/promote.js.map +0 -1
- package/dist/commands/read.d.ts +0 -6
- package/dist/commands/read.d.ts.map +0 -1
- package/dist/commands/read.js +0 -4
- package/dist/commands/read.js.map +0 -1
- package/dist/commands/recall.d.ts +0 -6
- package/dist/commands/recall.d.ts.map +0 -1
- package/dist/commands/recall.js +0 -4
- package/dist/commands/recall.js.map +0 -1
- package/dist/commands/record.d.ts +0 -6
- package/dist/commands/record.d.ts.map +0 -1
- package/dist/commands/record.js +0 -4
- package/dist/commands/record.js.map +0 -1
- package/dist/commands/search.d.ts +0 -6
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -4
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/supersede.d.ts +0 -6
- package/dist/commands/supersede.d.ts.map +0 -1
- package/dist/commands/supersede.js +0 -6
- package/dist/commands/supersede.js.map +0 -1
- package/dist/knowledge/sources.d.ts +0 -72
- package/dist/knowledge/sources.d.ts.map +0 -1
- package/dist/knowledge/sources.js +0 -388
- package/dist/knowledge/sources.js.map +0 -1
- package/dist/setup/opencode-evidence.d.ts +0 -37
- package/dist/setup/opencode-evidence.d.ts.map +0 -1
- package/dist/setup/opencode-evidence.js +0 -58
- package/dist/setup/opencode-evidence.js.map +0 -1
- package/dist/setup/opencode-loop-guard.d.ts +0 -9
- package/dist/setup/opencode-loop-guard.d.ts.map +0 -1
- package/dist/setup/opencode-loop-guard.js +0 -248
- package/dist/setup/opencode-loop-guard.js.map +0 -1
package/dist/web/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/web/i18n.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/web/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/web/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAYzG,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAkCzG,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,iBAAiB,EACjB,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,oBAAoB,CACvE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA2zBD,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAe7F"}
|
package/dist/web/server.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
2
|
import { KiokukoError } from '../errors.js';
|
|
3
|
+
import { rollbackFailedTransaction } from '../db/transaction.js';
|
|
3
4
|
import { readEntry, updateCandidateEntry } from '../memory/entries.js';
|
|
4
5
|
import { searchEntries } from '../memory/retrieval.js';
|
|
5
|
-
import { ENTRY_KINDS, ENTRY_STATUSES, requireWorkspace } from '../serialization/validate.js';
|
|
6
|
+
import { compareCanonicalStrings, ENTRY_KINDS, ENTRY_STATUSES, requireWorkspace } from '../serialization/validate.js';
|
|
6
7
|
import { AgentGatewayService } from '../gateway/agent-service.js';
|
|
7
8
|
import { ContextBroker } from '../context/broker.js';
|
|
8
9
|
import { listContextFeedback, listIntakeFeedback, listRunFeedback } from '../context/feedback.js';
|
|
@@ -15,10 +16,24 @@ import { curateMemoryCandidates, curatorFacets, globalizeCuratorCandidate } from
|
|
|
15
16
|
import { MEMORY_CLASSES } from '../memory/structured-memory.js';
|
|
16
17
|
import { GLOBAL_WORKSPACE } from '../memory/workspaces.js';
|
|
17
18
|
import { recallScopedMemory } from '../memory/scoped-memory.js';
|
|
19
|
+
import { documentsFromSkillSnapshot } from '../skills/import-preparation.js';
|
|
20
|
+
import { readSkillDiscoveryConfig } from '../skills/config.js';
|
|
21
|
+
import { GitHubSkillSourceFetcher } from '../skills/source/github-fetcher.js';
|
|
22
|
+
import { SkillSourceError } from '../skills/source/errors.js';
|
|
23
|
+
import { externalSkillRequirement, externalSkillSourceFetchRequest, listExternalSkills, listExternalSkillsPage, markExternalSkillRefreshFailure, readExternalSkill, refreshExternalSkillSnapshot, setExternalSkillState } from '../skills/store.js';
|
|
24
|
+
import { createSkillRegistryProvider } from '../skills/find.js';
|
|
25
|
+
import { parseStrictJson } from '../setup/strict-json.js';
|
|
26
|
+
import { fetchMaterializableSkillSnapshot } from '../skills/materialization-service.js';
|
|
18
27
|
const DEFAULT_HOST = '127.0.0.1';
|
|
19
28
|
const DEFAULT_PORT = 4173;
|
|
20
29
|
const MAX_BODY_BYTES = 2 * 1024 * 1024;
|
|
21
30
|
const MAX_WEB_ENTRIES = 200;
|
|
31
|
+
function hasUtf8Bom(bytes) {
|
|
32
|
+
return bytes.byteLength >= 3 && bytes[0] === 0xef && bytes[1] === 0xbb && bytes[2] === 0xbf;
|
|
33
|
+
}
|
|
34
|
+
function isInvalidUtf8EncodingError(error) {
|
|
35
|
+
return error instanceof TypeError && 'code' in error && error.code === 'ERR_ENCODING_INVALID_ENCODED_DATA';
|
|
36
|
+
}
|
|
22
37
|
function jsonResponse(response, status, value) {
|
|
23
38
|
const body = JSON.stringify(value);
|
|
24
39
|
response.writeHead(status, {
|
|
@@ -51,20 +66,22 @@ function cookieValue(request, name) {
|
|
|
51
66
|
}
|
|
52
67
|
return undefined;
|
|
53
68
|
}
|
|
54
|
-
function
|
|
55
|
-
if (
|
|
56
|
-
throw new KiokukoError('AUTHENTICATION_ERROR', '
|
|
69
|
+
function requireTrustedWebOrigin(request, trustedOrigin) {
|
|
70
|
+
if (trustedOrigin === undefined) {
|
|
71
|
+
throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
|
|
72
|
+
}
|
|
73
|
+
const expectedHost = new URL(trustedOrigin).host;
|
|
74
|
+
if (request.headers.host !== expectedHost) {
|
|
75
|
+
throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
|
|
57
76
|
}
|
|
58
77
|
const origin = request.headers.origin;
|
|
59
|
-
|
|
60
|
-
const expectedOrigin = host === undefined ? undefined : `http://${host}`;
|
|
61
|
-
if (origin !== undefined && (expectedOrigin === undefined || origin !== expectedOrigin)) {
|
|
78
|
+
if (origin !== undefined && origin !== trustedOrigin) {
|
|
62
79
|
throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
|
|
63
80
|
}
|
|
64
81
|
const referer = request.headers.referer;
|
|
65
82
|
if (referer !== undefined) {
|
|
66
83
|
try {
|
|
67
|
-
if (
|
|
84
|
+
if (new URL(referer).origin !== trustedOrigin)
|
|
68
85
|
throw new Error('origin');
|
|
69
86
|
}
|
|
70
87
|
catch {
|
|
@@ -72,6 +89,11 @@ function requireUiSession(request, sessionToken) {
|
|
|
72
89
|
}
|
|
73
90
|
}
|
|
74
91
|
}
|
|
92
|
+
function requireUiSession(request, sessionToken) {
|
|
93
|
+
if (cookieValue(request, UI_SESSION_COOKIE) !== sessionToken) {
|
|
94
|
+
throw new KiokukoError('AUTHENTICATION_ERROR', 'Authorization is invalid');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
75
97
|
function errorStatus(error) {
|
|
76
98
|
if (!(error instanceof KiokukoError))
|
|
77
99
|
return 500;
|
|
@@ -83,17 +105,48 @@ function errorStatus(error) {
|
|
|
83
105
|
return 404;
|
|
84
106
|
if (error.code === 'CONFLICT')
|
|
85
107
|
return 409;
|
|
108
|
+
if (error.code === 'BACKPRESSURE')
|
|
109
|
+
return 429;
|
|
86
110
|
if (error.code === 'SECURITY_REJECTION')
|
|
87
111
|
return 422;
|
|
112
|
+
if (error.code === 'SERVICE_UNAVAILABLE' || error.code === 'DATABASE_ERROR')
|
|
113
|
+
return 503;
|
|
114
|
+
if (error.code === 'NOT_IMPLEMENTED')
|
|
115
|
+
return 501;
|
|
88
116
|
return 500;
|
|
89
117
|
}
|
|
118
|
+
function boundedRetryAfterSeconds(value) {
|
|
119
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
120
|
+
return 1;
|
|
121
|
+
return Math.min(60, Math.max(1, Math.trunc(value)));
|
|
122
|
+
}
|
|
90
123
|
function errorBody(error) {
|
|
91
|
-
if (error instanceof KiokukoError) {
|
|
92
|
-
|
|
93
|
-
return { error: { code: error.code, message: 'Authorization is invalid', details: {} } };
|
|
94
|
-
return { error: { code: error.code, message: error.message, details: error.details } };
|
|
124
|
+
if (!(error instanceof KiokukoError)) {
|
|
125
|
+
return { error: { code: 'INTEGRITY_ERROR', message: 'Unexpected server error', details: {} } };
|
|
95
126
|
}
|
|
96
|
-
|
|
127
|
+
if (error.code === 'AUTHENTICATION_ERROR')
|
|
128
|
+
return { error: { code: error.code, message: 'Authorization is invalid', details: {} } };
|
|
129
|
+
if (error.code === 'VALIDATION_ERROR' || error.code === 'USAGE_ERROR')
|
|
130
|
+
return { error: { code: error.code, message: 'Request is invalid', details: {} } };
|
|
131
|
+
if (error.code === 'NOT_FOUND')
|
|
132
|
+
return { error: { code: error.code, message: 'Resource not found', details: {} } };
|
|
133
|
+
if (error.code === 'CONFLICT')
|
|
134
|
+
return { error: { code: error.code, message: 'Request conflicts with current state', details: {} } };
|
|
135
|
+
if (error.code === 'BACKPRESSURE')
|
|
136
|
+
return { error: { code: error.code, message: 'Service is busy', details: { retryAfterSeconds: boundedRetryAfterSeconds(error.details.retryAfterSeconds) } } };
|
|
137
|
+
if (error.code === 'DATABASE_ERROR')
|
|
138
|
+
return { error: { code: error.code, message: 'Database unavailable', details: {} } };
|
|
139
|
+
if (error.code === 'SERVICE_UNAVAILABLE')
|
|
140
|
+
return { error: { code: error.code, message: 'Service unavailable', details: {} } };
|
|
141
|
+
if (error.code === 'SECURITY_REJECTION')
|
|
142
|
+
return { error: { code: error.code, message: 'Request rejected', details: {} } };
|
|
143
|
+
if (error.code === 'INTEGRITY_ERROR')
|
|
144
|
+
return { error: { code: error.code, message: 'Internal integrity error', details: {} } };
|
|
145
|
+
if (error.code === 'PARTIAL_FAILURE')
|
|
146
|
+
return { error: { code: error.code, message: 'Operation partially failed', details: {} } };
|
|
147
|
+
if (error.code === 'NOT_IMPLEMENTED')
|
|
148
|
+
return { error: { code: error.code, message: 'Operation is not implemented', details: {} } };
|
|
149
|
+
return { error: { code: 'INTEGRITY_ERROR', message: 'Unexpected server error', details: {} } };
|
|
97
150
|
}
|
|
98
151
|
function asRecord(value, label) {
|
|
99
152
|
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
@@ -125,16 +178,104 @@ function limitQuery(value) {
|
|
|
125
178
|
}
|
|
126
179
|
return limit;
|
|
127
180
|
}
|
|
181
|
+
function invalidExternalSkillCursor() {
|
|
182
|
+
throw new KiokukoError('VALIDATION_ERROR', 'cursor is invalid');
|
|
183
|
+
}
|
|
184
|
+
function externalSkillCursor(record, listVersion, state) {
|
|
185
|
+
const value = [
|
|
186
|
+
1,
|
|
187
|
+
listVersion,
|
|
188
|
+
state ?? null,
|
|
189
|
+
record.sourceLocator,
|
|
190
|
+
record.slug,
|
|
191
|
+
record.provider,
|
|
192
|
+
record.skillId,
|
|
193
|
+
];
|
|
194
|
+
return Buffer.from(JSON.stringify(value), 'utf8').toString('base64url');
|
|
195
|
+
}
|
|
196
|
+
function externalSkillCursorQuery(url) {
|
|
197
|
+
const values = url.searchParams.getAll('cursor');
|
|
198
|
+
if (values.length === 0)
|
|
199
|
+
return undefined;
|
|
200
|
+
if (values.length !== 1 || !/^[A-Za-z0-9_-]{1,4096}$/u.test(values[0]))
|
|
201
|
+
invalidExternalSkillCursor();
|
|
202
|
+
let decoded;
|
|
203
|
+
let parsed;
|
|
204
|
+
try {
|
|
205
|
+
decoded = Buffer.from(values[0], 'base64url');
|
|
206
|
+
if (decoded.toString('base64url') !== values[0] || decoded.byteLength > 3_000 || hasUtf8Bom(decoded))
|
|
207
|
+
invalidExternalSkillCursor();
|
|
208
|
+
parsed = JSON.parse(new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(decoded));
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
if (error instanceof KiokukoError)
|
|
212
|
+
throw error;
|
|
213
|
+
if (error instanceof SyntaxError || isInvalidUtf8EncodingError(error))
|
|
214
|
+
invalidExternalSkillCursor();
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
if (!Array.isArray(parsed) || parsed.length !== 7 || parsed[0] !== 1
|
|
218
|
+
|| typeof parsed[1] !== 'number' || !Number.isSafeInteger(parsed[1]) || parsed[1] < 0
|
|
219
|
+
|| parsed[2] !== null && (typeof parsed[2] !== 'string'
|
|
220
|
+
|| !['discovered', 'imported', 'blocked', 'stale', 'disabled'].includes(parsed[2]))
|
|
221
|
+
|| parsed.slice(3).some((value) => typeof value !== 'string' || value.length < 1 || value.length > 2_000 || /\p{Cc}/u.test(value))) {
|
|
222
|
+
invalidExternalSkillCursor();
|
|
223
|
+
}
|
|
224
|
+
return parsed;
|
|
225
|
+
}
|
|
226
|
+
function externalSkillListItem(record) {
|
|
227
|
+
const metadata = record.metadata;
|
|
228
|
+
const documents = record.sourceCommit === null ? 0 : metadata.documents;
|
|
229
|
+
const technology = record.sourceCommit === null ? null : metadata.technology;
|
|
230
|
+
if (typeof documents !== 'number' || !Number.isSafeInteger(documents) || documents < 0 || documents > 64
|
|
231
|
+
|| technology !== null && (typeof technology !== 'string' || technology.length < 1 || technology.length > 500)) {
|
|
232
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'External skill list metadata is invalid');
|
|
233
|
+
}
|
|
234
|
+
return { ...record, metadata: { documents, technology } };
|
|
235
|
+
}
|
|
128
236
|
function listQuery(url, name, max = 50) {
|
|
129
237
|
const values = url.searchParams.getAll(name).map((value) => value.trim()).filter(Boolean);
|
|
130
238
|
if (values.length > max || values.some((value) => value.length > 300))
|
|
131
239
|
throw new KiokukoError('VALIDATION_ERROR', `${name} contains too many or too-large values`);
|
|
132
240
|
return [...new Set(values)];
|
|
133
241
|
}
|
|
242
|
+
function requireExactJsonMediaType(request) {
|
|
243
|
+
const contentTypes = [];
|
|
244
|
+
for (let index = 0; index < request.rawHeaders.length; index += 2) {
|
|
245
|
+
if (request.rawHeaders[index]?.toLowerCase() === 'content-type') {
|
|
246
|
+
contentTypes.push(request.rawHeaders[index + 1] ?? '');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (contentTypes.length !== 1 || contentTypes[0].trim().toLowerCase() !== 'application/json') {
|
|
250
|
+
request.resume();
|
|
251
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Content-Type must be exactly application/json');
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function decodeJsonBody(bytes) {
|
|
255
|
+
if (hasUtf8Bom(bytes)) {
|
|
256
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Request body must not contain a byte-order mark');
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
return new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
if (isInvalidUtf8EncodingError(error)) {
|
|
263
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Request body must be valid UTF-8');
|
|
264
|
+
}
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function requireOnlyJsonFields(payload, allowed, label) {
|
|
269
|
+
const allowedFields = new Set(allowed);
|
|
270
|
+
if (Object.keys(payload).some((field) => !allowedFields.has(field))) {
|
|
271
|
+
throw new KiokukoError('VALIDATION_ERROR', `${label} contains an unknown field`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
134
274
|
async function readJsonBody(request) {
|
|
275
|
+
requireExactJsonMediaType(request);
|
|
135
276
|
const chunks = [];
|
|
136
277
|
let size = 0;
|
|
137
|
-
const
|
|
278
|
+
const bytes = await new Promise((resolve, reject) => {
|
|
138
279
|
request.on('data', (chunk) => {
|
|
139
280
|
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
140
281
|
size += buffer.byteLength;
|
|
@@ -145,33 +286,53 @@ async function readJsonBody(request) {
|
|
|
145
286
|
}
|
|
146
287
|
chunks.push(buffer);
|
|
147
288
|
});
|
|
148
|
-
request.on('end', () => resolve(Buffer.concat(chunks)
|
|
289
|
+
request.on('end', () => resolve(Buffer.concat(chunks)));
|
|
149
290
|
request.on('error', reject);
|
|
291
|
+
request.on('aborted', () => reject(new KiokukoError('VALIDATION_ERROR', 'Request body is incomplete')));
|
|
150
292
|
});
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (error instanceof KiokukoError)
|
|
158
|
-
throw error;
|
|
159
|
-
throw new KiokukoError('VALIDATION_ERROR', 'Request body is not valid JSON');
|
|
293
|
+
const parsed = parseStrictJson(decodeJsonBody(bytes), { allowTrailingComma: false, disallowComments: true, allowEmptyContent: false }, 'Request body is not valid strict JSON');
|
|
294
|
+
return asRecord(parsed, 'Request body');
|
|
295
|
+
}
|
|
296
|
+
function requireNoQueryParameters(url) {
|
|
297
|
+
if (url.searchParams.entries().next().done !== true) {
|
|
298
|
+
throw new KiokukoError('VALIDATION_ERROR', 'This endpoint does not accept query parameters');
|
|
160
299
|
}
|
|
161
300
|
}
|
|
301
|
+
async function requireEmptyBody(request) {
|
|
302
|
+
await new Promise((resolve, reject) => {
|
|
303
|
+
request.once('data', () => {
|
|
304
|
+
request.resume();
|
|
305
|
+
reject(new KiokukoError('VALIDATION_ERROR', 'Request body must be empty'));
|
|
306
|
+
});
|
|
307
|
+
request.once('end', resolve);
|
|
308
|
+
request.once('error', reject);
|
|
309
|
+
request.once('aborted', () => reject(new KiokukoError('VALIDATION_ERROR', 'Request body is incomplete')));
|
|
310
|
+
});
|
|
311
|
+
}
|
|
162
312
|
function workspaceSummaries(database) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
313
|
+
database.exec('BEGIN DEFERRED');
|
|
314
|
+
try {
|
|
315
|
+
const externalWorkspaces = new Set(listExternalSkills(database).map((skill) => skill.sourceWorkspace));
|
|
316
|
+
const summaries = new Map();
|
|
317
|
+
for (const row of database.prepare('SELECT workspace, display_name FROM repositories ORDER BY workspace ASC').all()) {
|
|
318
|
+
if (!externalWorkspaces.has(row.workspace))
|
|
319
|
+
summaries.set(row.workspace, { workspace: row.workspace, displayName: row.display_name, count: 0 });
|
|
320
|
+
}
|
|
321
|
+
for (const row of database.prepare("SELECT workspace, COUNT(*) AS count FROM entries WHERE status <> 'superseded' GROUP BY workspace").all()) {
|
|
322
|
+
if (externalWorkspaces.has(row.workspace))
|
|
323
|
+
continue;
|
|
324
|
+
const existing = summaries.get(row.workspace);
|
|
325
|
+
if (existing)
|
|
326
|
+
existing.count = Number(row.count);
|
|
327
|
+
else
|
|
328
|
+
summaries.set(row.workspace, { workspace: row.workspace, displayName: '', count: Number(row.count) });
|
|
329
|
+
}
|
|
330
|
+
database.exec('COMMIT');
|
|
331
|
+
return [...summaries.values()].sort((left, right) => compareCanonicalStrings(left.workspace, right.workspace));
|
|
166
332
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (existing)
|
|
170
|
-
existing.count = Number(row.count);
|
|
171
|
-
else
|
|
172
|
-
summaries.set(row.workspace, { workspace: row.workspace, displayName: '', count: Number(row.count) });
|
|
333
|
+
catch (error) {
|
|
334
|
+
rollbackFailedTransaction(database, error);
|
|
173
335
|
}
|
|
174
|
-
return [...summaries.values()].sort((left, right) => left.workspace.localeCompare(right.workspace));
|
|
175
336
|
}
|
|
176
337
|
function workspaceTags(database, workspace) {
|
|
177
338
|
return database
|
|
@@ -230,6 +391,112 @@ function entryIdFromPath(pathname) {
|
|
|
230
391
|
throw new KiokukoError('VALIDATION_ERROR', 'entry id is not valid URL encoding');
|
|
231
392
|
}
|
|
232
393
|
}
|
|
394
|
+
function externalSkillIdFromPath(pathname) {
|
|
395
|
+
const prefix = '/api/skills/';
|
|
396
|
+
if (!pathname.startsWith(prefix))
|
|
397
|
+
return undefined;
|
|
398
|
+
const encoded = pathname.slice(prefix.length);
|
|
399
|
+
if (encoded.length === 0 || encoded.includes('/'))
|
|
400
|
+
throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
|
|
401
|
+
try {
|
|
402
|
+
const skillId = decodeURIComponent(encoded);
|
|
403
|
+
if (skillId.length === 0 || skillId.length > 500)
|
|
404
|
+
throw new Error('invalid');
|
|
405
|
+
return skillId;
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
throw new KiokukoError('VALIDATION_ERROR', 'skill id is not valid URL encoding');
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
function externalSkillSourceFailure(error, code, message) {
|
|
412
|
+
const failure = new KiokukoError(code, message, {
|
|
413
|
+
failureCode: error.code,
|
|
414
|
+
...(error.retryAfterSeconds === null ? {} : { retryAfterSeconds: error.retryAfterSeconds }),
|
|
415
|
+
});
|
|
416
|
+
Object.defineProperty(failure, 'cause', {
|
|
417
|
+
value: error,
|
|
418
|
+
enumerable: false,
|
|
419
|
+
configurable: false,
|
|
420
|
+
writable: false,
|
|
421
|
+
});
|
|
422
|
+
return failure;
|
|
423
|
+
}
|
|
424
|
+
function refreshExternalSkill(context, skillId, flights) {
|
|
425
|
+
if (flights.database !== context.database) {
|
|
426
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'External skill refresh coordinator is bound to another database');
|
|
427
|
+
}
|
|
428
|
+
const detail = readExternalSkill(context.database, skillId);
|
|
429
|
+
if (!detail)
|
|
430
|
+
throw new KiokukoError('NOT_FOUND', 'External skill not found');
|
|
431
|
+
if (detail.skill.sourceType !== 'github')
|
|
432
|
+
throw new KiokukoError('NOT_IMPLEMENTED', 'Only GitHub external skills can be refreshed automatically');
|
|
433
|
+
const candidate = {
|
|
434
|
+
id: detail.skill.skillId,
|
|
435
|
+
provider: detail.skill.provider,
|
|
436
|
+
name: detail.skill.name,
|
|
437
|
+
slug: detail.skill.slug,
|
|
438
|
+
source: detail.skill.sourceLocator,
|
|
439
|
+
sourceType: 'github',
|
|
440
|
+
installUrl: detail.skill.installUrl,
|
|
441
|
+
installs: detail.skill.installs,
|
|
442
|
+
duplicate: detail.skill.duplicate,
|
|
443
|
+
officialStatus: detail.skill.officialStatus,
|
|
444
|
+
auditStatus: detail.skill.auditStatus,
|
|
445
|
+
};
|
|
446
|
+
const expected = { generation: detail.skill.generation, sourceCommit: detail.skill.sourceCommit, snapshotHash: detail.skill.snapshotHash, state: detail.skill.state, lastCheckedAt: detail.skill.lastCheckedAt };
|
|
447
|
+
const flightKey = JSON.stringify([
|
|
448
|
+
skillId,
|
|
449
|
+
expected.generation,
|
|
450
|
+
expected.sourceCommit,
|
|
451
|
+
expected.snapshotHash,
|
|
452
|
+
expected.state,
|
|
453
|
+
expected.lastCheckedAt,
|
|
454
|
+
]);
|
|
455
|
+
const existing = flights.operations.get(flightKey);
|
|
456
|
+
if (existing !== undefined)
|
|
457
|
+
return existing;
|
|
458
|
+
const operation = Promise.resolve().then(async () => {
|
|
459
|
+
try {
|
|
460
|
+
const materialized = await fetchMaterializableSkillSnapshot(context.database, candidate, {
|
|
461
|
+
provider: createSkillRegistryProvider(),
|
|
462
|
+
sourceFetcher: new GitHubSkillSourceFetcher({ token: readSkillDiscoveryConfig().githubToken }),
|
|
463
|
+
sourceRequest: externalSkillSourceFetchRequest(detail),
|
|
464
|
+
cacheWrite: (operation) => context.enqueueWrite(operation),
|
|
465
|
+
});
|
|
466
|
+
const snapshot = materialized.snapshot;
|
|
467
|
+
if (!snapshot.files.some((file) => file.primary))
|
|
468
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Skill snapshot has no primary document');
|
|
469
|
+
const requirement = externalSkillRequirement(context.database, skillId);
|
|
470
|
+
return await context.enqueueWrite(() => refreshExternalSkillSnapshot(context.database, skillId, snapshot, documentsFromSkillSnapshot(snapshot), requirement, expected, undefined, materialized.authorization));
|
|
471
|
+
}
|
|
472
|
+
catch (error) {
|
|
473
|
+
if (!(error instanceof SkillSourceError))
|
|
474
|
+
throw error;
|
|
475
|
+
if (error.code === 'source_missing' || error.code === 'candidate_not_found_at_source') {
|
|
476
|
+
await context.enqueueWrite(() => markExternalSkillRefreshFailure(context.database, skillId, 'stale', expected));
|
|
477
|
+
throw externalSkillSourceFailure(error, 'CONFLICT', 'External skill source is stale');
|
|
478
|
+
}
|
|
479
|
+
if (error.code === 'skill_disabled_for_model_invocation' || error.code === 'skill_secret_detected' || error.code === 'skill_blocked') {
|
|
480
|
+
await context.enqueueWrite(() => markExternalSkillRefreshFailure(context.database, skillId, 'blocked', expected));
|
|
481
|
+
throw externalSkillSourceFailure(error, 'SECURITY_REJECTION', 'External skill snapshot was blocked');
|
|
482
|
+
}
|
|
483
|
+
if (error.code === 'source_rate_limited' || error.code === 'source_unavailable') {
|
|
484
|
+
throw externalSkillSourceFailure(error, 'SERVICE_UNAVAILABLE', 'External skill source is temporarily unavailable');
|
|
485
|
+
}
|
|
486
|
+
if (error.code === 'source_tree_truncated' || error.code === 'skill_too_large' || error.code === 'skill_validation_failed') {
|
|
487
|
+
throw externalSkillSourceFailure(error, 'SECURITY_REJECTION', 'External skill source failed validation');
|
|
488
|
+
}
|
|
489
|
+
throw error;
|
|
490
|
+
}
|
|
491
|
+
});
|
|
492
|
+
flights.operations.set(flightKey, operation);
|
|
493
|
+
const cleanup = () => {
|
|
494
|
+
if (flights.operations.get(flightKey) === operation)
|
|
495
|
+
flights.operations.delete(flightKey);
|
|
496
|
+
};
|
|
497
|
+
void operation.then(cleanup, cleanup);
|
|
498
|
+
return operation;
|
|
499
|
+
}
|
|
233
500
|
function operatorRunIdFromPath(pathname) {
|
|
234
501
|
const prefix = '/api/operator/runs/';
|
|
235
502
|
if (!pathname.startsWith(prefix) || pathname.slice(prefix.length).includes('/'))
|
|
@@ -323,7 +590,7 @@ function operatorRunDetail(context, runId) {
|
|
|
323
590
|
untrusted: true,
|
|
324
591
|
};
|
|
325
592
|
}
|
|
326
|
-
async function handleRequest(request, response, context, sessionToken) {
|
|
593
|
+
async function handleRequest(request, response, context, sessionToken, externalSkillRefreshFlights) {
|
|
327
594
|
if (request.method === 'OPTIONS') {
|
|
328
595
|
response.writeHead(204, { 'cache-control': 'no-store' });
|
|
329
596
|
response.end();
|
|
@@ -339,6 +606,72 @@ async function handleRequest(request, response, context, sessionToken) {
|
|
|
339
606
|
return;
|
|
340
607
|
}
|
|
341
608
|
requireUiSession(request, sessionToken);
|
|
609
|
+
if (request.method === 'GET' && url.pathname === '/api/skills') {
|
|
610
|
+
if ([...url.searchParams.keys()].some((key) => key !== 'state' && key !== 'limit' && key !== 'cursor')
|
|
611
|
+
|| url.searchParams.getAll('state').length > 1 || url.searchParams.getAll('limit').length > 1) {
|
|
612
|
+
throw new KiokukoError('VALIDATION_ERROR', 'External skill list query is invalid');
|
|
613
|
+
}
|
|
614
|
+
const state = enumQuery(url.searchParams.get('state'), ['discovered', 'imported', 'blocked', 'stale', 'disabled'], 'state');
|
|
615
|
+
const limit = limitQuery(url.searchParams.get('limit'));
|
|
616
|
+
const cursor = externalSkillCursorQuery(url);
|
|
617
|
+
const normalizedState = state;
|
|
618
|
+
if (cursor !== undefined && cursor[2] !== (normalizedState ?? null)) {
|
|
619
|
+
throw new KiokukoError('CONFLICT', 'External skill list filter changed; restart pagination');
|
|
620
|
+
}
|
|
621
|
+
const page = listExternalSkillsPage(context.database, {
|
|
622
|
+
...(normalizedState === undefined ? {} : { state: normalizedState }),
|
|
623
|
+
limit,
|
|
624
|
+
...(cursor === undefined ? {} : {
|
|
625
|
+
expectedVersion: cursor[1],
|
|
626
|
+
after: { sourceLocator: cursor[3], slug: cursor[4], provider: cursor[5], skillId: cursor[6] },
|
|
627
|
+
}),
|
|
628
|
+
});
|
|
629
|
+
const skills = page.skills.map(externalSkillListItem);
|
|
630
|
+
jsonResponse(response, 200, {
|
|
631
|
+
skills,
|
|
632
|
+
count: skills.length,
|
|
633
|
+
truncated: page.truncated,
|
|
634
|
+
nextCursor: page.truncated ? externalSkillCursor(page.skills.at(-1), page.version, normalizedState) : null,
|
|
635
|
+
untrusted: true,
|
|
636
|
+
});
|
|
637
|
+
return;
|
|
638
|
+
}
|
|
639
|
+
const isExternalSkillAction = url.pathname.endsWith('/refresh') || url.pathname.endsWith('/disable') || url.pathname.endsWith('/enable');
|
|
640
|
+
const externalSkillId = isExternalSkillAction ? undefined : externalSkillIdFromPath(url.pathname);
|
|
641
|
+
if (externalSkillId !== undefined && request.method === 'GET') {
|
|
642
|
+
requireNoQueryParameters(url);
|
|
643
|
+
const detail = readExternalSkill(context.database, externalSkillId);
|
|
644
|
+
if (!detail)
|
|
645
|
+
throw new KiokukoError('NOT_FOUND', 'External skill not found');
|
|
646
|
+
jsonResponse(response, 200, {
|
|
647
|
+
skill: externalSkillListItem(detail.skill),
|
|
648
|
+
entries: detail.entries.slice(0, MAX_WEB_ENTRIES),
|
|
649
|
+
entriesTruncated: detail.entries.length > MAX_WEB_ENTRIES,
|
|
650
|
+
untrusted: true,
|
|
651
|
+
});
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
if (request.method === 'POST' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/refresh')) {
|
|
655
|
+
const skillId = externalSkillIdFromPath(url.pathname.slice(0, -'/refresh'.length));
|
|
656
|
+
if (skillId === undefined)
|
|
657
|
+
throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
|
|
658
|
+
requireNoQueryParameters(url);
|
|
659
|
+
await requireEmptyBody(request);
|
|
660
|
+
jsonResponse(response, 200, await refreshExternalSkill(context, skillId, externalSkillRefreshFlights));
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
if (request.method === 'POST' && url.pathname.startsWith('/api/skills/') && (url.pathname.endsWith('/disable') || url.pathname.endsWith('/enable'))) {
|
|
664
|
+
const suffix = url.pathname.endsWith('/disable') ? '/disable' : '/enable';
|
|
665
|
+
const skillId = externalSkillIdFromPath(url.pathname.slice(0, -suffix.length));
|
|
666
|
+
if (skillId === undefined)
|
|
667
|
+
throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
|
|
668
|
+
requireNoQueryParameters(url);
|
|
669
|
+
await requireEmptyBody(request);
|
|
670
|
+
const state = suffix === '/disable' ? 'disabled' : 'imported';
|
|
671
|
+
const skill = await context.enqueueWrite(() => setExternalSkillState(context.database, skillId, state));
|
|
672
|
+
jsonResponse(response, 200, { skill, untrusted: true });
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
342
675
|
if (request.method === 'GET' && url.pathname === '/api/operator/runs') {
|
|
343
676
|
jsonResponse(response, 200, operatorRunList(context, url));
|
|
344
677
|
return;
|
|
@@ -422,6 +755,7 @@ async function handleRequest(request, response, context, sessionToken) {
|
|
|
422
755
|
}
|
|
423
756
|
if (request.method === 'POST' && url.pathname === '/api/curator/globalize') {
|
|
424
757
|
const payload = await readJsonBody(request);
|
|
758
|
+
requireOnlyJsonFields(payload, ['workspace', 'entryId', 'expectedRevision', 'actor'], 'Curator globalize request');
|
|
425
759
|
const workspace = requireWorkspace(url.searchParams.get('workspace') ?? (typeof payload.workspace === 'string' ? payload.workspace : ''));
|
|
426
760
|
const result = await context.enqueueWrite(() => globalizeCuratorCandidate(context.database, {
|
|
427
761
|
workspace,
|
|
@@ -452,6 +786,7 @@ async function handleRequest(request, response, context, sessionToken) {
|
|
|
452
786
|
return;
|
|
453
787
|
}
|
|
454
788
|
const payload = await readJsonBody(request);
|
|
789
|
+
requireOnlyJsonFields(payload, ['expectedRevision', 'kind', 'title', 'body', 'summary', 'scope', 'provenance', 'tags', 'actor'], 'Entry update request');
|
|
455
790
|
const expectedRevision = payload.expectedRevision;
|
|
456
791
|
const input = {
|
|
457
792
|
workspace,
|
|
@@ -480,16 +815,27 @@ async function handleRequest(request, response, context, sessionToken) {
|
|
|
480
815
|
function isSharedServerPath(pathname) {
|
|
481
816
|
return pathname.startsWith('/health/') || pathname === '/api/v1' || pathname.startsWith('/api/v1/');
|
|
482
817
|
}
|
|
483
|
-
function createLegacyApplication(context) {
|
|
818
|
+
function createLegacyApplication(context, trustedOrigin) {
|
|
484
819
|
const sharedApplication = context.createAuthenticatedApp(createAgentV1Handler(context));
|
|
485
820
|
const sessionToken = randomBytes(32).toString('base64url');
|
|
821
|
+
const externalSkillRefreshFlights = {
|
|
822
|
+
database: context.database,
|
|
823
|
+
operations: new Map(),
|
|
824
|
+
};
|
|
486
825
|
return (request, response) => {
|
|
826
|
+
try {
|
|
827
|
+
requireTrustedWebOrigin(request, trustedOrigin());
|
|
828
|
+
}
|
|
829
|
+
catch (error) {
|
|
830
|
+
jsonResponse(response, errorStatus(error), errorBody(error));
|
|
831
|
+
return;
|
|
832
|
+
}
|
|
487
833
|
const pathname = new URL(request.url ?? '/', 'http://127.0.0.1').pathname;
|
|
488
834
|
if (isSharedServerPath(pathname)) {
|
|
489
835
|
sharedApplication(request, response);
|
|
490
836
|
return;
|
|
491
837
|
}
|
|
492
|
-
void handleRequest(request, response, context, sessionToken).catch((error) => {
|
|
838
|
+
void handleRequest(request, response, context, sessionToken, externalSkillRefreshFlights).catch((error) => {
|
|
493
839
|
if (!response.headersSent)
|
|
494
840
|
jsonResponse(response, errorStatus(error), errorBody(error));
|
|
495
841
|
else
|
|
@@ -498,13 +844,15 @@ function createLegacyApplication(context) {
|
|
|
498
844
|
};
|
|
499
845
|
}
|
|
500
846
|
export async function startWebServer(options = {}) {
|
|
847
|
+
let trustedOrigin;
|
|
501
848
|
const runtime = await startHttpServer({
|
|
502
849
|
...(options.httpOptions ?? {}),
|
|
503
850
|
...(options.databasePath === undefined ? {} : { databasePath: options.databasePath }),
|
|
504
851
|
host: options.host ?? DEFAULT_HOST,
|
|
505
852
|
port: options.port ?? DEFAULT_PORT,
|
|
506
|
-
applicationFactory: createLegacyApplication,
|
|
853
|
+
applicationFactory: (context) => createLegacyApplication(context, () => trustedOrigin),
|
|
507
854
|
});
|
|
855
|
+
trustedOrigin = new URL(runtime.url).origin;
|
|
508
856
|
return {
|
|
509
857
|
server: runtime.server,
|
|
510
858
|
url: runtime.url,
|