kiokuko 1.0.14 → 1.0.16
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 +16 -4
- package/README.ko.md +16 -4
- package/README.md +16 -4
- package/README.zh-CN.md +16 -4
- package/dist/akinator/agent-task.d.ts +10 -0
- package/dist/akinator/agent-task.d.ts.map +1 -1
- package/dist/akinator/agent-task.js +54 -11
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/assurance/codex-hooks.js +3 -3
- package/dist/assurance/codex-hooks.js.map +1 -1
- package/dist/assurance/contracts.d.ts +8 -1
- package/dist/assurance/contracts.d.ts.map +1 -1
- package/dist/assurance/contracts.js +2 -1
- package/dist/assurance/contracts.js.map +1 -1
- package/dist/assurance/inspect.d.ts +14 -0
- package/dist/assurance/inspect.d.ts.map +1 -1
- package/dist/assurance/inspect.js +71 -9
- package/dist/assurance/inspect.js.map +1 -1
- package/dist/assurance/refresh.d.ts.map +1 -1
- package/dist/assurance/refresh.js +25 -3
- package/dist/assurance/refresh.js.map +1 -1
- package/dist/assurance/service.d.ts +1 -1
- package/dist/assurance/snapshot.js +16 -2
- package/dist/assurance/snapshot.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +68 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +3 -0
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +3 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/memory-index.d.ts +6 -0
- package/dist/commands/memory-index.d.ts.map +1 -0
- package/dist/commands/memory-index.js +30 -0
- package/dist/commands/memory-index.js.map +1 -0
- package/dist/commands/reranker.d.ts +9 -0
- package/dist/commands/reranker.d.ts.map +1 -0
- package/dist/commands/reranker.js +52 -0
- package/dist/commands/reranker.js.map +1 -0
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +10 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/context/broker.d.ts +14 -0
- package/dist/context/broker.d.ts.map +1 -1
- package/dist/context/broker.js +162 -15
- package/dist/context/broker.js.map +1 -1
- package/dist/context/ranking.d.ts +6 -2
- package/dist/context/ranking.d.ts.map +1 -1
- package/dist/context/ranking.js +23 -1
- package/dist/context/ranking.js.map +1 -1
- package/dist/context/scoped-broker.d.ts +20 -0
- package/dist/context/scoped-broker.d.ts.map +1 -1
- package/dist/context/scoped-broker.js +173 -10
- package/dist/context/scoped-broker.js.map +1 -1
- package/dist/context/selection-state.d.ts.map +1 -1
- package/dist/context/selection-state.js +2 -0
- package/dist/context/selection-state.js.map +1 -1
- package/dist/embedding/javascript-backend.d.ts.map +1 -1
- package/dist/embedding/javascript-backend.js +7 -1
- package/dist/embedding/javascript-backend.js.map +1 -1
- package/dist/embedding/model-download.d.ts +2 -2
- package/dist/embedding/model-download.d.ts.map +1 -1
- package/dist/embedding/model-download.js +23 -11
- package/dist/embedding/model-download.js.map +1 -1
- package/dist/embedding/model-installation.d.ts +3 -1
- package/dist/embedding/model-installation.d.ts.map +1 -1
- package/dist/embedding/model-installation.js +16 -9
- package/dist/embedding/model-installation.js.map +1 -1
- package/dist/embedding/model-manifest.d.ts +7 -7
- package/dist/embedding/model-manifest.d.ts.map +1 -1
- package/dist/embedding/model-manifest.js +28 -17
- package/dist/embedding/model-manifest.js.map +1 -1
- package/dist/embedding/presets/manifest.d.ts +20 -7
- package/dist/embedding/presets/manifest.d.ts.map +1 -1
- package/dist/embedding/presets/manifest.js.map +1 -1
- package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -1
- package/dist/embedding/sqlite-vec-backend.js +7 -1
- package/dist/embedding/sqlite-vec-backend.js.map +1 -1
- package/dist/embedding/store.d.ts.map +1 -1
- package/dist/embedding/store.js +2 -0
- package/dist/embedding/store.js.map +1 -1
- package/dist/embedding/types.d.ts +2 -0
- package/dist/embedding/types.d.ts.map +1 -1
- package/dist/ledger/checkpoint-contract.d.ts +6 -6
- package/dist/mcp/chatgpt-contract.d.ts +8 -2
- package/dist/mcp/chatgpt-contract.d.ts.map +1 -1
- package/dist/mcp/request-deadline.d.ts +1 -1
- package/dist/mcp/request-deadline.d.ts.map +1 -1
- package/dist/mcp/request-deadline.js +3 -0
- package/dist/mcp/request-deadline.js.map +1 -1
- package/dist/mcp/runtime-owner.d.ts.map +1 -1
- package/dist/mcp/runtime-owner.js +7 -0
- package/dist/mcp/runtime-owner.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +39 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/checkpoint-contract.d.ts +9 -9
- package/dist/memory/curator.d.ts.map +1 -1
- package/dist/memory/curator.js +2 -0
- package/dist/memory/curator.js.map +1 -1
- package/dist/memory/entries.d.ts.map +1 -1
- package/dist/memory/entries.js +2 -0
- package/dist/memory/entries.js.map +1 -1
- package/dist/memory/federated-retrieval.d.ts +16 -2
- package/dist/memory/federated-retrieval.d.ts.map +1 -1
- package/dist/memory/federated-retrieval.js +229 -45
- package/dist/memory/federated-retrieval.js.map +1 -1
- package/dist/memory/global-conversation-query.d.ts +5 -0
- package/dist/memory/global-conversation-query.d.ts.map +1 -1
- package/dist/memory/global-conversation-query.js +16 -2
- package/dist/memory/global-conversation-query.js.map +1 -1
- package/dist/memory/hybrid-retrieval.d.ts +18 -2
- package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
- package/dist/memory/hybrid-retrieval.js +180 -9
- package/dist/memory/hybrid-retrieval.js.map +1 -1
- package/dist/memory/index-service.d.ts +103 -0
- package/dist/memory/index-service.d.ts.map +1 -0
- package/dist/memory/index-service.js +196 -0
- package/dist/memory/index-service.js.map +1 -0
- package/dist/memory/index-state.d.ts +56 -0
- package/dist/memory/index-state.d.ts.map +1 -0
- package/dist/memory/index-state.js +100 -0
- package/dist/memory/index-state.js.map +1 -0
- package/dist/memory/interaction-capture.d.ts.map +1 -1
- package/dist/memory/interaction-capture.js +6 -3
- package/dist/memory/interaction-capture.js.map +1 -1
- package/dist/memory/interaction-contract.d.ts +30 -0
- package/dist/memory/interaction-contract.d.ts.map +1 -1
- package/dist/memory/interaction-contract.js +38 -0
- package/dist/memory/interaction-contract.js.map +1 -1
- package/dist/memory/interaction-recall.d.ts +14 -1
- package/dist/memory/interaction-recall.d.ts.map +1 -1
- package/dist/memory/interaction-recall.js +48 -2
- package/dist/memory/interaction-recall.js.map +1 -1
- package/dist/memory/lesson-derivation.d.ts +79 -0
- package/dist/memory/lesson-derivation.d.ts.map +1 -0
- package/dist/memory/lesson-derivation.js +302 -0
- package/dist/memory/lesson-derivation.js.map +1 -0
- package/dist/memory/lesson-reinforcement.d.ts.map +1 -1
- package/dist/memory/lesson-reinforcement.js +7 -4
- package/dist/memory/lesson-reinforcement.js.map +1 -1
- package/dist/memory/lifecycle.d.ts.map +1 -1
- package/dist/memory/lifecycle.js +4 -0
- package/dist/memory/lifecycle.js.map +1 -1
- package/dist/memory/retrieval.d.ts +14 -0
- package/dist/memory/retrieval.d.ts.map +1 -1
- package/dist/memory/retrieval.js +107 -13
- package/dist/memory/retrieval.js.map +1 -1
- package/dist/memory/scoped-memory.d.ts +5 -0
- package/dist/memory/scoped-memory.d.ts.map +1 -1
- package/dist/memory/scoped-memory.js +3 -0
- package/dist/memory/scoped-memory.js.map +1 -1
- package/dist/memory/search-extension-config.d.ts +5 -0
- package/dist/memory/search-extension-config.d.ts.map +1 -0
- package/dist/memory/search-extension-config.js +20 -0
- package/dist/memory/search-extension-config.js.map +1 -0
- package/dist/memory/temporal.d.ts +18 -0
- package/dist/memory/temporal.d.ts.map +1 -0
- package/dist/memory/temporal.js +128 -0
- package/dist/memory/temporal.js.map +1 -0
- package/dist/reranker/config.d.ts +15 -0
- package/dist/reranker/config.d.ts.map +1 -0
- package/dist/reranker/config.js +48 -0
- package/dist/reranker/config.js.map +1 -0
- package/dist/reranker/preset.d.ts +12 -0
- package/dist/reranker/preset.d.ts.map +1 -0
- package/dist/reranker/preset.js +102 -0
- package/dist/reranker/preset.js.map +1 -0
- package/dist/reranker/runtime.d.ts +40 -0
- package/dist/reranker/runtime.d.ts.map +1 -0
- package/dist/reranker/runtime.js +324 -0
- package/dist/reranker/runtime.js.map +1 -0
- package/dist/reranker/service.d.ts +36 -0
- package/dist/reranker/service.d.ts.map +1 -0
- package/dist/reranker/service.js +163 -0
- package/dist/reranker/service.js.map +1 -0
- package/dist/reranker/setup.d.ts +30 -0
- package/dist/reranker/setup.d.ts.map +1 -0
- package/dist/reranker/setup.js +50 -0
- package/dist/reranker/setup.js.map +1 -0
- package/dist/reranker/worker.d.ts +2 -0
- package/dist/reranker/worker.d.ts.map +1 -0
- package/dist/reranker/worker.js +115 -0
- package/dist/reranker/worker.js.map +1 -0
- package/dist/serialization/validate.d.ts.map +1 -1
- package/dist/serialization/validate.js +29 -1
- package/dist/serialization/validate.js.map +1 -1
- package/dist/server/routes/task-assurance.d.ts.map +1 -1
- package/dist/server/routes/task-assurance.js +11 -2
- package/dist/server/routes/task-assurance.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +47 -11
- package/dist/web/server.js.map +1 -1
- package/docs/README.ja.md +2 -0
- package/docs/README.md +2 -0
- package/docs/chatgpt.ja.md +1 -0
- package/docs/chatgpt.md +1 -0
- package/docs/memory-assurance.md +20 -0
- package/docs/memory-index-evaluation-2026-09-30.md +50 -0
- package/docs/memory-index.md +138 -0
- package/migrations/007_revision_bound_lesson_sources.sql +33 -0
- package/migrations/008_memory_index.sql +39 -0
- package/package.json +3 -2
- package/skills/kiokuko-soul/SKILL.md +13 -0
|
@@ -29,8 +29,8 @@ export declare const executionEvidenceSchema: z.ZodObject<{
|
|
|
29
29
|
execution: z.ZodString;
|
|
30
30
|
stateDigest: z.ZodString;
|
|
31
31
|
outcome: z.ZodEnum<{
|
|
32
|
-
failed: "failed";
|
|
33
32
|
unknown: "unknown";
|
|
33
|
+
failed: "failed";
|
|
34
34
|
passed: "passed";
|
|
35
35
|
skipped: "skipped";
|
|
36
36
|
}>;
|
|
@@ -42,6 +42,13 @@ export declare const executionEvidenceSchema: z.ZodObject<{
|
|
|
42
42
|
}, z.core.$strict>;
|
|
43
43
|
export declare const memoryRefreshSchema: z.ZodObject<{
|
|
44
44
|
capabilities: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
45
|
+
indexing: z.ZodOptional<z.ZodObject<{
|
|
46
|
+
stage: z.ZodEnum<{
|
|
47
|
+
atomic: "atomic";
|
|
48
|
+
bridge: "bridge";
|
|
49
|
+
}>;
|
|
50
|
+
cursor: z.ZodDefault<z.ZodString>;
|
|
51
|
+
}, z.core.$strict>>;
|
|
45
52
|
changedPaths: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
46
53
|
errorSignatures: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
47
54
|
maxContextChars: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/assurance/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,eAAO,MAAM,aAAa;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;kBAS7B,CAAC;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;kBAI2E,CAAC;AAChH,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/assurance/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,eAAO,MAAM,aAAa;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;kBAS7B,CAAC;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;kBAI2E,CAAC;AAChH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;kBAMmH,CAAC;AACpJ,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAIvE"}
|
|
@@ -24,10 +24,11 @@ export const executionEvidenceSchema = z.object({
|
|
|
24
24
|
}).strict().refine(v => v.outcome !== 'passed' || v.exitCode === 0, 'Passing evidence requires exit code zero');
|
|
25
25
|
export const memoryRefreshSchema = z.object({
|
|
26
26
|
...assuranceBase, capabilities: z.array(z.unknown()).optional(),
|
|
27
|
+
indexing: z.object({ stage: z.enum(['atomic', 'bridge']), cursor: z.string().max(256).default('') }).strict().optional(),
|
|
27
28
|
changedPaths: z.array(z.string().min(1).max(500)).max(100).default([]),
|
|
28
29
|
errorSignatures: z.array(z.string().min(1).max(1000)).max(50).default([]),
|
|
29
30
|
maxContextChars: z.number().int().min(1).max(100000).optional(),
|
|
30
|
-
}).strict().refine(v => v.changedPaths.length + v.errorSignatures.length > 0, 'Refresh requires new retrieval signals');
|
|
31
|
+
}).strict().refine(v => v.indexing !== undefined || v.changedPaths.length + v.errorSignatures.length > 0, 'Refresh requires new retrieval signals');
|
|
31
32
|
export function parseAssurance(schema, raw) {
|
|
32
33
|
const result = schema.safeParse(raw);
|
|
33
34
|
if (!result.success)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/assurance/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;CACtG,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,GAAG,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI;IAC1E,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE;IAC1F,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACjC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,cAAc,CAAU,EAAE,CAAC;YACzG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,6DAA6D,EAAE,CAAC,CAAC;QACrI,CAAC;AACH,CAAC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,GAAG,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI;IAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACnG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,0CAA0C,CAAC,CAAC;AAChH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/D,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,wCAAwC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/assurance/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import * as z from 'zod/v4';
|
|
2
|
+
import { KiokukoError } from '../errors.js';
|
|
3
|
+
declare const inspectionFailures: {
|
|
4
|
+
readonly skill: readonly ["VALIDATION_ERROR", "For bundled Skill reads, omit path to read kiokuko-soul, or pass a Skill name such as kiokuko-soul. References use skill-name/references/file.md. Installed client paths are not bundled paths."];
|
|
5
|
+
readonly path: readonly ["VALIDATION_ERROR", "Use a repository-relative file path or an absolute path inside the repository. Parent traversal, .git and .env are excluded."];
|
|
6
|
+
readonly boundary: readonly ["VALIDATION_ERROR", "Inspection requires a regular file inside its allowed directory, at most 256000 bytes. Symlinks must stay inside that directory."];
|
|
7
|
+
readonly missing: readonly ["NOT_FOUND", "Inspection file was not found. Use operation files to list repository paths, or omit path with operation skill to read kiokuko-soul."];
|
|
8
|
+
readonly repository: readonly ["VALIDATION_ERROR", "Repository inspection requires an existing Git checkout. Bundled Skill reads use operation skill and need no checkout."];
|
|
9
|
+
};
|
|
10
|
+
/** Only fixed recovery text is safe to expose through MCP; never echo filesystem errors. */
|
|
11
|
+
export declare class TaskInspectionError extends KiokukoError {
|
|
12
|
+
readonly reason: keyof typeof inspectionFailures;
|
|
13
|
+
constructor(reason: keyof typeof inspectionFailures);
|
|
14
|
+
}
|
|
2
15
|
export declare const inspectTaskSchema: z.ZodObject<{
|
|
3
16
|
cwd: z.ZodString;
|
|
4
17
|
operation: z.ZodEnum<{
|
|
@@ -13,4 +26,5 @@ export declare const inspectTaskSchema: z.ZodObject<{
|
|
|
13
26
|
export declare function inspectTask(raw: unknown): {
|
|
14
27
|
text: string;
|
|
15
28
|
};
|
|
29
|
+
export {};
|
|
16
30
|
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/assurance/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/assurance/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,QAAA,MAAM,kBAAkB;;;;;;CAMd,CAAC;AAEX,4FAA4F;AAC5F,qBAAa,mBAAoB,SAAQ,YAAY;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,kBAAkB;gBAAvC,MAAM,EAAE,MAAM,OAAO,kBAAkB;CAI7D;AAGD,eAAO,MAAM,iBAAiB;;;;;;;;;kBAGnB,CAAC;AA+BZ,0GAA0G;AAC1G,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO;UAlByB,MAAM;EAmCtE"}
|
|
@@ -5,25 +5,87 @@ import path from 'node:path';
|
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { KiokukoError } from '../errors.js';
|
|
7
7
|
import { parseAssurance } from './contracts.js';
|
|
8
|
+
import { STANDARD_SKILL_MANIFESTS } from '../setup/standard-skills.js';
|
|
9
|
+
const inspectionFailures = {
|
|
10
|
+
skill: ['VALIDATION_ERROR', 'For bundled Skill reads, omit path to read kiokuko-soul, or pass a Skill name such as kiokuko-soul. References use skill-name/references/file.md. Installed client paths are not bundled paths.'],
|
|
11
|
+
path: ['VALIDATION_ERROR', 'Use a repository-relative file path or an absolute path inside the repository. Parent traversal, .git and .env are excluded.'],
|
|
12
|
+
boundary: ['VALIDATION_ERROR', 'Inspection requires a regular file inside its allowed directory, at most 256000 bytes. Symlinks must stay inside that directory.'],
|
|
13
|
+
missing: ['NOT_FOUND', 'Inspection file was not found. Use operation files to list repository paths, or omit path with operation skill to read kiokuko-soul.'],
|
|
14
|
+
repository: ['VALIDATION_ERROR', 'Repository inspection requires an existing Git checkout. Bundled Skill reads use operation skill and need no checkout.'],
|
|
15
|
+
};
|
|
16
|
+
/** Only fixed recovery text is safe to expose through MCP; never echo filesystem errors. */
|
|
17
|
+
export class TaskInspectionError extends KiokukoError {
|
|
18
|
+
reason;
|
|
19
|
+
constructor(reason) {
|
|
20
|
+
const [code, message] = inspectionFailures[reason];
|
|
21
|
+
super(code, message);
|
|
22
|
+
this.reason = reason;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const skillRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../skills');
|
|
8
26
|
export const inspectTaskSchema = z.object({
|
|
9
27
|
cwd: z.string().min(1).max(4096), operation: z.enum(['read', 'files', 'status', 'skill']),
|
|
10
|
-
path: z.string().min(1).max(
|
|
28
|
+
path: z.string().min(1).max(4096).optional().describe('Skill: omit for kiokuko-soul, or use its name; references use skill-name/references/file.md. Read: repository-relative or in-repository absolute file path.'),
|
|
11
29
|
}).strict();
|
|
30
|
+
function bundledSkillPath(input) {
|
|
31
|
+
let name = input ?? 'kiokuko-soul';
|
|
32
|
+
if (name.split(/[\\/]/u).includes('..'))
|
|
33
|
+
throw new TaskInspectionError('skill');
|
|
34
|
+
if (path.isAbsolute(name))
|
|
35
|
+
name = path.relative(skillRoot, name);
|
|
36
|
+
name = name.replaceAll('\\', '/').replace(/^skills\//u, '');
|
|
37
|
+
const manifest = STANDARD_SKILL_MANIFESTS.find(skill => name === skill.name || name.startsWith(`${skill.name}/`));
|
|
38
|
+
if (!manifest)
|
|
39
|
+
throw new TaskInspectionError('skill');
|
|
40
|
+
if (name === manifest.name)
|
|
41
|
+
name += '/SKILL.md';
|
|
42
|
+
if (!manifest.files.includes(name.slice(manifest.name.length + 1)))
|
|
43
|
+
throw new TaskInspectionError('skill');
|
|
44
|
+
return name;
|
|
45
|
+
}
|
|
46
|
+
function readInspectionFile(base, name) {
|
|
47
|
+
try {
|
|
48
|
+
const canonicalBase = realpathSync(base);
|
|
49
|
+
const resolved = realpathSync(path.resolve(base, name));
|
|
50
|
+
if (!resolved.startsWith(canonicalBase + path.sep)
|
|
51
|
+
|| path.relative(canonicalBase, resolved).split(path.sep).some(part => part === '.git' || part === '.env'))
|
|
52
|
+
throw new TaskInspectionError('boundary');
|
|
53
|
+
const stat = statSync(resolved);
|
|
54
|
+
if (!stat.isFile() || stat.size > 256000)
|
|
55
|
+
throw new TaskInspectionError('boundary');
|
|
56
|
+
return { text: readFileSync(resolved, 'utf8') };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof TaskInspectionError)
|
|
60
|
+
throw error;
|
|
61
|
+
const code = error.code;
|
|
62
|
+
if (code === 'ENOENT' || code === 'ENOTDIR')
|
|
63
|
+
throw new TaskInspectionError('missing');
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
12
67
|
/** Preparation-only inspection: fixed operations, no shell parser or executable supplied by the model. */
|
|
13
68
|
export function inspectTask(raw) {
|
|
14
69
|
const input = parseAssurance(inspectTaskSchema, raw);
|
|
15
|
-
|
|
70
|
+
// Bundled Skills belong to this package, not to the target checkout or its submodules.
|
|
71
|
+
if (input.operation === 'skill')
|
|
72
|
+
return readInspectionFile(skillRoot, bundledSkillPath(input.path));
|
|
73
|
+
let root;
|
|
74
|
+
try {
|
|
75
|
+
root = realpathSync(execFileSync('git', ['-C', realpathSync(input.cwd), 'rev-parse', '--show-toplevel'], {
|
|
76
|
+
encoding: 'utf8', timeout: 5000, stdio: ['ignore', 'pipe', 'pipe'],
|
|
77
|
+
}).trim());
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
throw new TaskInspectionError('repository');
|
|
81
|
+
}
|
|
16
82
|
if (input.operation === 'files' || input.operation === 'status') {
|
|
17
83
|
const args = input.operation === 'files' ? ['ls-files', '--cached', '--others', '--exclude-standard'] : ['status', '--short'];
|
|
18
84
|
return { text: execFileSync('git', ['-C', root, ...args], { encoding: 'utf8', timeout: 5000, maxBuffer: 512000 }) };
|
|
19
85
|
}
|
|
20
|
-
const base = input.operation === 'skill' ? path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../skills') : root;
|
|
21
86
|
const name = input.path ?? '';
|
|
22
|
-
if (!name ||
|
|
23
|
-
throw new
|
|
24
|
-
|
|
25
|
-
if (!resolved.startsWith(realpathSync(base) + path.sep) || !statSync(resolved).isFile() || statSync(resolved).size > 256000)
|
|
26
|
-
throw new KiokukoError('VALIDATION_ERROR', 'Inspection exceeds its file boundary');
|
|
27
|
-
return { text: readFileSync(resolved, 'utf8') };
|
|
87
|
+
if (!name || name.split(/[\\/]/u).some(p => p === '..' || p === '.git' || p === '.env'))
|
|
88
|
+
throw new TaskInspectionError('path');
|
|
89
|
+
return readInspectionFile(root, name);
|
|
28
90
|
}
|
|
29
91
|
//# sourceMappingURL=inspect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/assurance/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/assurance/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/assurance/refresh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/assurance/refresh.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAavD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,oCAqE7F"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { indexingSources, createIndexWork, assertIndexingRunReady } from '../memory/index-service.js';
|
|
1
2
|
import { scopedMemoryUseSignal } from '../context/scoped-memory-use.js';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { LedgerStore } from '../ledger/store.js';
|
|
@@ -6,6 +7,7 @@ import { assertCapabilityCatalogBinding } from '../akinator/capability-binding.j
|
|
|
6
7
|
import { deriveMemoryPolicy, resolveCapabilities, hasBlockingRequiredCapability } from '../akinator/capabilities.js';
|
|
7
8
|
import { readContextBrokerRunState } from '../context/broker.js';
|
|
8
9
|
import { queryScopedContextGated } from '../context/scoped-broker.js';
|
|
10
|
+
import { readTaskContextRequestBinding } from '../akinator/agent-task.js';
|
|
9
11
|
import { resolveProjectWorkspaceReadOnly } from '../memory/workspaces.js';
|
|
10
12
|
import { canonicalContentHash } from '../serialization/validate.js';
|
|
11
13
|
import { memoryRefreshSchema, parseAssurance } from './contracts.js';
|
|
@@ -35,8 +37,8 @@ export async function refreshTaskMemory(db, raw, signal) {
|
|
|
35
37
|
const state = assertAssuranceCwd(db, input.runId, input.cwd);
|
|
36
38
|
if (state.revision !== input.expectedRevision)
|
|
37
39
|
throw new KiokukoError('CONFLICT', 'Refresh revision changed');
|
|
38
|
-
const
|
|
39
|
-
const boundBudget =
|
|
40
|
+
const retrievalBinding = readTaskContextRequestBinding(run.metadata);
|
|
41
|
+
const boundBudget = retrievalBinding?.maxContextChars;
|
|
40
42
|
if (input.maxContextChars !== undefined && typeof boundBudget === 'number' && input.maxContextChars !== boundBudget)
|
|
41
43
|
throw new KiokukoError('CONFLICT', 'Refresh context budget differs from the prepared run');
|
|
42
44
|
const budget = input.maxContextChars ?? (typeof boundBudget === 'number' ? boundBudget : undefined);
|
|
@@ -45,10 +47,16 @@ export async function refreshTaskMemory(db, raw, signal) {
|
|
|
45
47
|
if (hasBlockingRequiredCapability(resolution))
|
|
46
48
|
throw new KiokukoError('CONFLICT', 'Required capability unavailable');
|
|
47
49
|
// Rank outside the write transaction; recheck the revision in the broker's atomic persistence gate.
|
|
50
|
+
if (input.indexing)
|
|
51
|
+
assertIndexingRunReady(db, input.runId);
|
|
52
|
+
const indexing = input.indexing ? indexingSources(db, run.workspace, input.indexing.stage, input.indexing.cursor) : undefined;
|
|
48
53
|
let response = {};
|
|
49
54
|
await queryScopedContextGated(db, {
|
|
55
|
+
...(indexing === undefined ? {} : { indexingSourceIds: indexing.map(e => e.id) }),
|
|
50
56
|
project, task: run.title ?? current.taskProfile.target ?? "task", taskProfile: current.taskProfile, runId: input.runId,
|
|
51
57
|
recommendedTags: current.recommendedTags, changedPaths: input.changedPaths, errorSignatures: input.errorSignatures,
|
|
58
|
+
...(retrievalBinding?.temporal === undefined ? {} : { temporal: retrievalBinding.temporal }),
|
|
59
|
+
relatedMode: retrievalBinding?.relatedMode ?? 'off',
|
|
52
60
|
...(budget === undefined ? {} : { characterBudget: budget }),
|
|
53
61
|
}, candidate => {
|
|
54
62
|
const memoryUse = scopedMemoryUseSignal(db, run.workspace, candidate);
|
|
@@ -65,7 +73,21 @@ export async function refreshTaskMemory(db, raw, signal) {
|
|
|
65
73
|
if (after.revision === input.expectedRevision)
|
|
66
74
|
db.prepare('UPDATE task_assurance SET revision=revision+1 WHERE run_id=?').run(input.runId);
|
|
67
75
|
bindAssuranceRoot(db, input.runId, project.repositoryRoot, policy.contextWithheld ? 'capability_withheld' : context?.retrieval?.status);
|
|
68
|
-
|
|
76
|
+
const indexWork = input.indexing && context?.deliveryId && !policy.contextWithheld ? createIndexWork(db, {
|
|
77
|
+
runId: input.runId,
|
|
78
|
+
deliveryId: context.deliveryId,
|
|
79
|
+
workspace: run.workspace,
|
|
80
|
+
stage: input.indexing.stage,
|
|
81
|
+
sourceIds: context.items.map(item => item.entryId),
|
|
82
|
+
remainingCharacters: Math.max(0, (budget ?? 8000) - context.items.reduce((sum, item) => sum + Array.from(item.title + (item.summary ?? '') + item.bodyPreview).length, 0)),
|
|
83
|
+
}) : undefined;
|
|
84
|
+
const indexResult = indexWork ? {
|
|
85
|
+
...indexWork,
|
|
86
|
+
nextCursor: indexing?.at(-1)?.id ?? input.indexing?.cursor,
|
|
87
|
+
unprocessed: (indexing ?? []).filter(entry => !context?.items.some(item => item.entryId === entry.id))
|
|
88
|
+
.map(entry => ({ entryId: entry.id, reason: 'context_budget_or_capability' })),
|
|
89
|
+
} : undefined;
|
|
90
|
+
response = { ...(indexResult ? { indexing: indexResult } : {}), context, memoryPolicy: policy, assurance: taskAssuranceReport(db, input.runId, false) };
|
|
69
91
|
db.prepare('INSERT INTO task_assurance_requests VALUES (?, ?, ?, ?)').run(input.runId, input.requestId, digest, JSON.stringify(response));
|
|
70
92
|
});
|
|
71
93
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/assurance/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE1G,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAkB,EAAE,GAAY,EAAE,MAAoB;IAC5F,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,cAAc,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACpE,8BAA8B,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;QAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;IAC/H,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvG,MAAM,IAAI,YAAY,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAC;QAC9F,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,uGAAuG,CAAC;SAC9H,GAAG,CAAoD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACxF,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM;YAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,oCAAoC,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAA4B,CAAC;IACpE,CAAC;IACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,gBAAgB;QAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IAC9G,MAAM,
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/assurance/refresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ export declare function recordTaskEvidence(db: SqliteDatabase, raw: unknown, pro
|
|
|
35
35
|
}): {
|
|
36
36
|
evidenceId: `${string}-${string}-${string}-${string}-${string}`;
|
|
37
37
|
provenance: "model_reported" | "client_observed";
|
|
38
|
-
outcome: "
|
|
38
|
+
outcome: "unknown" | "failed" | "passed" | "skipped";
|
|
39
39
|
} & {
|
|
40
40
|
revision: number;
|
|
41
41
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
|
-
import { lstatSync, readFileSync, readlinkSync, realpathSync, existsSync } from 'node:fs';
|
|
3
|
+
import { lstatSync, readFileSync, readlinkSync, realpathSync, existsSync, opendirSync } from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { KiokukoError } from '../errors.js';
|
|
6
6
|
/** Hash the Git-visible source, tests and configuration; never persist file contents. */
|
|
@@ -42,7 +42,7 @@ function snapshotRepository(root, budget, depth) {
|
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
44
|
if (error.code === 'ENOENT') {
|
|
45
|
-
hash.update('deleted\0');
|
|
45
|
+
hash.update(gitlinks.has(file) ? `gitlink\0${gitlinks.get(file)}\0uninitialized\0` : 'deleted\0');
|
|
46
46
|
continue;
|
|
47
47
|
}
|
|
48
48
|
throw error;
|
|
@@ -64,6 +64,20 @@ function snapshotRepository(root, budget, depth) {
|
|
|
64
64
|
}
|
|
65
65
|
if (stat.isDirectory() && gitlinks.has(file) && realpathSync(full) === full) {
|
|
66
66
|
hash.update('gitlink\0').update(gitlinks.get(file)).update('\0');
|
|
67
|
+
if (!existsSync(path.join(full, '.git'))) {
|
|
68
|
+
// A normal non-recursive clone leaves an empty gitlink directory. Do not
|
|
69
|
+
// mistake the parent discovered by rev-parse for this submodule's root.
|
|
70
|
+
const directory = opendirSync(full);
|
|
71
|
+
try {
|
|
72
|
+
if (directory.readSync() !== null)
|
|
73
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Uninitialized submodule contains files that cannot be verified');
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
directory.closeSync();
|
|
77
|
+
}
|
|
78
|
+
hash.update('uninitialized\0');
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
67
81
|
hash.update(snapshotRepository(full, budget, depth + 1)).update('\0');
|
|
68
82
|
continue;
|
|
69
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/assurance/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/assurance/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAMpD,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAW1F,OAAO,EAA0B,KAAK,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAA0B,KAAK,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AA6VnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAChD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACjD;AA2eD,wBAAgB,QAAQ,CAAC,YAAY,GAAE,eAAoB,GAAG,OAAO,CAyQpE;AAaD,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,EAAE,YAAY,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC/G"}
|
package/dist/cli.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { registerMemoryIndexCommands } from './commands/memory-index.js';
|
|
1
2
|
import { registerCodexHookCommand } from './commands/codex-hook.js';
|
|
2
3
|
import { registerAkinatorMemoryCommands } from './commands/akinator-memory.js';
|
|
3
4
|
import { Command, CommanderError } from 'commander';
|
|
@@ -11,6 +12,7 @@ import { createBackup } from './commands/backup.js';
|
|
|
11
12
|
import { runCuratorCommand } from './commands/curator.js';
|
|
12
13
|
import { promptRemoveMissingRepositoryLocations, runDoctor } from './commands/doctor.js';
|
|
13
14
|
import { registerEmbeddingsCommands } from './commands/embeddings.js';
|
|
15
|
+
import { registerRerankerCommands } from './commands/reranker.js';
|
|
14
16
|
import { writeExport } from './commands/export.js';
|
|
15
17
|
import { importWorkspace } from './commands/import.js';
|
|
16
18
|
import { initializeDatabase } from './commands/init.js';
|
|
@@ -22,6 +24,7 @@ import { useRepository } from './commands/use.js';
|
|
|
22
24
|
import { registerUninstallCommand } from './commands/uninstall.js';
|
|
23
25
|
import { getGlobalDatabasePath } from './config/paths.js';
|
|
24
26
|
import { openConnection } from './db/connection.js';
|
|
27
|
+
import { closeSharedRerankerRuntime } from './reranker/service.js';
|
|
25
28
|
import { openEmbeddingDatabase } from './embedding/backend.js';
|
|
26
29
|
import { parseEmbeddingConfig } from './embedding/config.js';
|
|
27
30
|
import { createEmbeddingRuntime, prepareEmbeddingSearchRuntime } from './embedding/runtime.js';
|
|
@@ -30,8 +33,10 @@ import { runMcpServer } from './mcp/server.js';
|
|
|
30
33
|
import { globalizeCuratorCandidate } from './memory/curator.js';
|
|
31
34
|
import { readEntry, recordEntry } from './memory/entries.js';
|
|
32
35
|
import { linkEntries, promoteEntry, supersedeEntry } from './memory/lifecycle.js';
|
|
33
|
-
import {
|
|
36
|
+
import { recallEntriesWithReranker, searchEntriesWithReranker } from './memory/retrieval.js';
|
|
34
37
|
import { recallScopedMemory } from './memory/scoped-memory.js';
|
|
38
|
+
import { normalizeTemporalConstraint } from './memory/temporal.js';
|
|
39
|
+
import { effectiveRelatedSearchMode } from './memory/search-extension-config.js';
|
|
35
40
|
import { PACKAGE_VERSION } from './package-version.js';
|
|
36
41
|
import { findMissingRepositoryLocations, removeMissingRepositoryLocations } from './repository/binding.js';
|
|
37
42
|
import { errorEnvelope, successEnvelope } from './serialization/envelope.js';
|
|
@@ -270,11 +275,23 @@ async function withPreparedSemanticRuntime(dependencies, database, selectedBacke
|
|
|
270
275
|
function configureRecallCommand(command, dependencies) {
|
|
271
276
|
const recall = addWorkspaceOptions(command.description('Human/operator management: recall relevant memory entries').argument('<query>'))
|
|
272
277
|
.option('--limit <number>', 'Maximum entries', '5').option('--max-chars <number>', 'Context character budget', '8000')
|
|
273
|
-
.option('--scope <scope>', 'auto, project, ecosystem, or global', 'auto').option('--cwd <path>', 'Repository path used for scoped recall')
|
|
278
|
+
.option('--scope <scope>', 'auto, project, ecosystem, or global', 'auto').option('--cwd <path>', 'Repository path used for scoped recall')
|
|
279
|
+
.option('--temporal-basis <basis>', 'recorded or occurred')
|
|
280
|
+
.option('--temporal-mode <mode>', 'boost or restrict')
|
|
281
|
+
.option('--temporal-start <instant>', 'Inclusive ISO-8601 lower bound')
|
|
282
|
+
.option('--temporal-end <instant>', 'Exclusive ISO-8601 upper bound')
|
|
283
|
+
.option('--anchor-time <instant>', 'ISO-8601 request time fixed for replay')
|
|
284
|
+
.option('--timezone <zone>', 'IANA time zone used to normalize the request', 'UTC')
|
|
285
|
+
.option('--related-mode <mode>', 'off, observe, or active bounded one-hop related candidates');
|
|
274
286
|
recall.action(async (query, options) => {
|
|
287
|
+
const temporal = temporalOption(options);
|
|
288
|
+
const relatedMode = relatedModeOption(options);
|
|
275
289
|
let data;
|
|
276
290
|
if (options.workspace !== undefined) {
|
|
277
|
-
data = await withEmbeddingDatabase(dependencies, (database, backend) => withPreparedSemanticRuntime(dependencies, database, backend, query, (runtime) =>
|
|
291
|
+
data = await withEmbeddingDatabase(dependencies, (database, backend) => withPreparedSemanticRuntime(dependencies, database, backend, query, (runtime) => recallEntriesWithReranker(database, {
|
|
292
|
+
workspace: String(options.workspace), query, limit: Number(options.limit), maxChars: Number(options.maxChars),
|
|
293
|
+
...(temporal === undefined ? {} : { temporal }), relatedMode,
|
|
294
|
+
}, runtime)));
|
|
278
295
|
}
|
|
279
296
|
else {
|
|
280
297
|
data = await withEmbeddingDatabase(dependencies, (database, backend) => withPreparedSemanticRuntime(dependencies, database, backend, query, (runtime) => recallScopedMemory(database, {
|
|
@@ -282,6 +299,8 @@ function configureRecallCommand(command, dependencies) {
|
|
|
282
299
|
scope: String(options.scope ?? 'auto'),
|
|
283
300
|
limit: Number(options.limit),
|
|
284
301
|
maxChars: Number(options.maxChars),
|
|
302
|
+
...(temporal === undefined ? {} : { temporal }),
|
|
303
|
+
relatedMode,
|
|
285
304
|
...(typeof options.cwd === 'string' ? { cwd: options.cwd } : {}),
|
|
286
305
|
}, runtime)));
|
|
287
306
|
}
|
|
@@ -292,6 +311,28 @@ function configureRecallCommand(command, dependencies) {
|
|
|
292
311
|
});
|
|
293
312
|
return recall;
|
|
294
313
|
}
|
|
314
|
+
function temporalOption(options) {
|
|
315
|
+
const supplied = ['temporalBasis', 'temporalMode', 'temporalStart', 'temporalEnd', 'anchorTime']
|
|
316
|
+
.some((key) => options[key] !== undefined);
|
|
317
|
+
if (!supplied)
|
|
318
|
+
return undefined;
|
|
319
|
+
const anchorTime = typeof options.anchorTime === 'string' ? options.anchorTime : new Date().toISOString();
|
|
320
|
+
return normalizeTemporalConstraint({
|
|
321
|
+
basis: options.temporalBasis,
|
|
322
|
+
mode: options.temporalMode,
|
|
323
|
+
...(typeof options.temporalStart === 'string' ? { start: options.temporalStart } : {}),
|
|
324
|
+
...(typeof options.temporalEnd === 'string' ? { end: options.temporalEnd } : {}),
|
|
325
|
+
anchorTime,
|
|
326
|
+
timezone: options.timezone ?? 'UTC',
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
function relatedModeOption(options) {
|
|
330
|
+
const requested = options.relatedMode;
|
|
331
|
+
if (requested !== undefined && requested !== 'off' && requested !== 'observe' && requested !== 'active') {
|
|
332
|
+
throw new KiokukoError('VALIDATION_ERROR', 'related mode must be off, observe, or active');
|
|
333
|
+
}
|
|
334
|
+
return effectiveRelatedSearchMode(requested);
|
|
335
|
+
}
|
|
295
336
|
const CALL_OPERATIONS = [
|
|
296
337
|
'init',
|
|
297
338
|
'use',
|
|
@@ -723,16 +764,28 @@ export function buildCli(dependencies = {}) {
|
|
|
723
764
|
humanOrJson(options.json, 'guide.answer', data, data.question?.prompt ?? 'Akinator context is ready');
|
|
724
765
|
});
|
|
725
766
|
const search = addWorkspaceOptions(cli.command('search').description('Human/operator management: search memory entries').argument('<query>'))
|
|
726
|
-
.option('--limit <number>', 'Maximum entries', '20').option('--kind <kind>').option('--status <status>').option('--tag <tag>')
|
|
767
|
+
.option('--limit <number>', 'Maximum entries', '20').option('--kind <kind>').option('--status <status>').option('--tag <tag>')
|
|
768
|
+
.option('--temporal-basis <basis>', 'recorded or occurred')
|
|
769
|
+
.option('--temporal-mode <mode>', 'boost or restrict')
|
|
770
|
+
.option('--temporal-start <instant>', 'Inclusive ISO-8601 lower bound')
|
|
771
|
+
.option('--temporal-end <instant>', 'Exclusive ISO-8601 upper bound')
|
|
772
|
+
.option('--anchor-time <instant>', 'ISO-8601 request time fixed for replay')
|
|
773
|
+
.option('--timezone <zone>', 'IANA time zone used to normalize the request', 'UTC')
|
|
774
|
+
.option('--related-mode <mode>', 'off, observe, or active bounded one-hop related candidates');
|
|
727
775
|
search.action(async (query, options) => {
|
|
728
|
-
const
|
|
776
|
+
const temporal = temporalOption(options);
|
|
777
|
+
const searchOptions = {
|
|
778
|
+
workspace: String(options.workspace ?? ''), query, limit: Number(options.limit),
|
|
779
|
+
...(temporal === undefined ? {} : { temporal }),
|
|
780
|
+
relatedMode: relatedModeOption(options),
|
|
781
|
+
};
|
|
729
782
|
if (typeof options.kind === 'string')
|
|
730
783
|
searchOptions.kind = options.kind;
|
|
731
784
|
if (typeof options.status === 'string')
|
|
732
785
|
searchOptions.status = options.status;
|
|
733
786
|
if (typeof options.tag === 'string')
|
|
734
787
|
searchOptions.tag = options.tag;
|
|
735
|
-
const data = await withEmbeddingDatabase(dependencies, (database, backend) => withPreparedSemanticRuntime(dependencies, database, backend, query, (runtime) =>
|
|
788
|
+
const data = await withEmbeddingDatabase(dependencies, (database, backend) => withPreparedSemanticRuntime(dependencies, database, backend, query, (runtime) => searchEntriesWithReranker(database, searchOptions, runtime)));
|
|
736
789
|
humanOrJson(options.json === true, 'search', data, `${data.items.length} memory entries found`, { count: data.count });
|
|
737
790
|
});
|
|
738
791
|
const read = addWorkspaceOptions(cli.command('read').description('Human/operator management: read one memory entry').argument('<entry-id>'));
|
|
@@ -830,6 +883,7 @@ export function buildCli(dependencies = {}) {
|
|
|
830
883
|
registerCodexHookCommand(cli);
|
|
831
884
|
registerLedgerCommands(cli, { withDatabase });
|
|
832
885
|
registerAkinatorMemoryCommands(cli);
|
|
886
|
+
registerMemoryIndexCommands(cli, { withDatabase });
|
|
833
887
|
registerSkillsCommands(cli, dependencies.skills ?? { withDatabase });
|
|
834
888
|
registerEmbeddingsCommands(cli, {
|
|
835
889
|
withDatabase: (operation) => withEmbeddingDatabase(dependencies, operation, { databasePath: getGlobalDatabasePath(dependencies.setupEnvironment) }),
|
|
@@ -841,6 +895,10 @@ export function buildCli(dependencies = {}) {
|
|
|
841
895
|
...(dependencies.setupOutput === undefined ? {} : { setupOutput: dependencies.setupOutput }),
|
|
842
896
|
output: humanOrJson,
|
|
843
897
|
});
|
|
898
|
+
registerRerankerCommands(cli, {
|
|
899
|
+
...(dependencies.setupEnvironment === undefined ? {} : dependencies.setupEnvironment),
|
|
900
|
+
output: humanOrJson,
|
|
901
|
+
});
|
|
844
902
|
cli.command('web').description('Start the local Kiokuko web UI')
|
|
845
903
|
.option('--host <host>', 'Loopback host', '127.0.0.1')
|
|
846
904
|
.option('--port <number>', 'HTTP port', '4173')
|
|
@@ -884,7 +942,7 @@ export function buildCli(dependencies = {}) {
|
|
|
884
942
|
}
|
|
885
943
|
function operationFor(argv) {
|
|
886
944
|
const command = argv[2] ?? 'unknown';
|
|
887
|
-
if (['server', 'agent', 'skills', 'embeddings'].includes(command) && argv[3] !== undefined && !argv[3].startsWith('-'))
|
|
945
|
+
if (['server', 'agent', 'skills', 'embeddings', 'reranker'].includes(command) && argv[3] !== undefined && !argv[3].startsWith('-'))
|
|
888
946
|
return `${command}.${argv[3]}`;
|
|
889
947
|
return command;
|
|
890
948
|
}
|
|
@@ -929,5 +987,8 @@ export async function runCli(argv = process.argv, dependencies = {}) {
|
|
|
929
987
|
process.stderr.write(`${envelope.error.message}\n`);
|
|
930
988
|
return exitCodeFor(error);
|
|
931
989
|
}
|
|
990
|
+
finally {
|
|
991
|
+
await closeSharedRerankerRuntime();
|
|
992
|
+
}
|
|
932
993
|
}
|
|
933
994
|
//# sourceMappingURL=cli.js.map
|