kiokuko-dsh 0.1.93 → 0.1.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/dsh/lisp/contracts.d.ts +1 -1
  2. package/dist/dsh/lisp/contracts.d.ts.map +1 -1
  3. package/dist/dsh/lisp/contracts.js +2 -1
  4. package/dist/dsh/lisp/contracts.js.map +1 -1
  5. package/dist/dsh/lisp/hot-contracts.d.ts +108 -0
  6. package/dist/dsh/lisp/hot-contracts.d.ts.map +1 -0
  7. package/dist/dsh/lisp/hot-contracts.js +72 -0
  8. package/dist/dsh/lisp/hot-contracts.js.map +1 -0
  9. package/dist/dsh/lisp/hot-store.d.ts +91 -0
  10. package/dist/dsh/lisp/hot-store.d.ts.map +1 -0
  11. package/dist/dsh/lisp/hot-store.js +198 -0
  12. package/dist/dsh/lisp/hot-store.js.map +1 -0
  13. package/dist/dsh/lisp/hot-tools.d.ts +36 -0
  14. package/dist/dsh/lisp/hot-tools.d.ts.map +1 -0
  15. package/dist/dsh/lisp/hot-tools.js +172 -0
  16. package/dist/dsh/lisp/hot-tools.js.map +1 -0
  17. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  18. package/dist/dsh/lisp/manager.js +28 -0
  19. package/dist/dsh/lisp/manager.js.map +1 -1
  20. package/dist/dsh/lisp/store.js +1 -1
  21. package/dist/dsh/lisp/store.js.map +1 -1
  22. package/dist/dsh/lisp/surface.d.ts +5 -0
  23. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  24. package/dist/dsh/lisp/surface.js +29 -7
  25. package/dist/dsh/lisp/surface.js.map +1 -1
  26. package/dist/dsh/memory-application.js +1 -1
  27. package/dist/dsh/memory-application.js.map +1 -1
  28. package/dist/dsh/skill-prompts.json +1 -1
  29. package/docs/lisp-hot-tools.md +136 -0
  30. package/docs/lisp.md +5 -1
  31. package/migrations/031_dsh_lisp_hot_tools.sql +30 -0
  32. package/package.json +1 -1
  33. package/scripts/smoke-typesafe.mjs +1 -0
  34. package/skills/kiokuko-lisp/SKILL.md +18 -0
@@ -10,7 +10,7 @@ export declare const LispConfig: z.ZodObject<{
10
10
  maxOutputBytes: z.ZodDefault<z.ZodNumber>;
11
11
  }, z.core.$strict>;
12
12
  export type LispConfiguration = z.infer<typeof LispConfig>;
13
- export declare const LISP_TOOLS: readonly ["lisp_eval", "lisp_define", "lisp_call", "lisp_observe", "lisp_stage", "lisp_verify", "lisp_apply", "lisp_compare", "lisp_describe", "lisp_inspect", "lisp_status", "lisp_cancel", "lisp_reset"];
13
+ export declare const LISP_TOOLS: readonly ["lisp_eval", "lisp_define", "lisp_call", "lisp_observe", "lisp_stage", "lisp_verify", "lisp_apply", "lisp_compare", "lisp_describe", "lisp_inspect", "lisp_status", "lisp_cancel", "lisp_reset", "lisp_hot_contract", "lisp_hot_install", "lisp_hot_call", "lisp_hot_status", "lisp_hot_deactivate"];
14
14
  export type LispTool = typeof LISP_TOOLS[number];
15
15
  export declare const FRAME_BYTES = 1048576;
16
16
  export declare const FILE_BYTES: number;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,eAAO,MAAM,UAAU;;;;;;;;kBAOZ,CAAA;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAC1D,eAAO,MAAM,UAAU,4MAA6M,CAAA;AACpO,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AAChD,eAAO,MAAM,WAAW,UAAY,CAAA;AACpC,eAAO,MAAM,UAAU,QAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,eAAO,MAAM,UAAU,aAA0D,CAAA;AACjF,MAAM,WAAW,SAAS;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC/E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;AAC/I,qBAAa,SAAU,SAAQ,gBAAgB;gBACjC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAqC;CACzF;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK7C;AACD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAuC;AACjG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAItG;AACD,eAAO,MAAM,SAAS;;;;kBACyD,CAAA;AAC/E,eAAO,MAAM,eAAe;;;;;;;iCAG1B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;4BAGtB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,eAAO,MAAM,UAAU;;;;;;;;kBAOZ,CAAA;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAC1D,eAAO,MAAM,UAAU,gTACuF,CAAA;AAC9G,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AAChD,eAAO,MAAM,WAAW,UAAY,CAAA;AACpC,eAAO,MAAM,UAAU,QAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,eAAO,MAAM,UAAU,aAA0D,CAAA;AACjF,MAAM,WAAW,SAAS;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC/E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;AAC/I,qBAAa,SAAU,SAAQ,gBAAgB;gBACjC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAqC;CACzF;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK7C;AACD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAuC;AACjG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAItG;AACD,eAAO,MAAM,SAAS;;;;kBACyD,CAAA;AAC/E,eAAO,MAAM,eAAe;;;;;;;iCAG1B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;4BAGtB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA"}
@@ -9,7 +9,8 @@ export const LispConfig = z.object({
9
9
  idleTimeoutMs: z.number().int().min(1000).max(3_600_000).default(300_000),
10
10
  maxOutputBytes: z.number().int().min(1024).max(8_388_608).default(8_388_608),
11
11
  }).strict();
12
- export const LISP_TOOLS = ['lisp_eval', 'lisp_define', 'lisp_call', 'lisp_observe', 'lisp_stage', 'lisp_verify', 'lisp_apply', 'lisp_compare', 'lisp_describe', 'lisp_inspect', 'lisp_status', 'lisp_cancel', 'lisp_reset'];
12
+ export const LISP_TOOLS = ['lisp_eval', 'lisp_define', 'lisp_call', 'lisp_observe', 'lisp_stage', 'lisp_verify', 'lisp_apply', 'lisp_compare', 'lisp_describe', 'lisp_inspect', 'lisp_status', 'lisp_cancel', 'lisp_reset',
13
+ 'lisp_hot_contract', 'lisp_hot_install', 'lisp_hot_call', 'lisp_hot_status', 'lisp_hot_deactivate'];
13
14
  export const FRAME_BYTES = 1_048_576;
14
15
  export const FILE_BYTES = 64 * 1024 * 1024;
15
16
  export { RESULT_BYTES, renderResult } from './model-result.js';
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { z } from 'zod';
2
+ export declare const HotName: z.ZodString;
3
+ export declare const HotContractInput: z.ZodObject<{
4
+ description: z.ZodString;
5
+ name: z.ZodString;
6
+ inputSchema: z.ZodObject<{
7
+ type: z.ZodEnum<{
8
+ string: "string";
9
+ number: "number";
10
+ boolean: "boolean";
11
+ object: "object";
12
+ null: "null";
13
+ array: "array";
14
+ integer: "integer";
15
+ }>;
16
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
17
+ required: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ items: z.ZodOptional<z.ZodUnknown>;
19
+ additionalProperties: z.ZodOptional<z.ZodLiteral<false>>;
20
+ }, z.core.$strict>;
21
+ outputSchema: z.ZodObject<{
22
+ type: z.ZodEnum<{
23
+ string: "string";
24
+ number: "number";
25
+ boolean: "boolean";
26
+ object: "object";
27
+ null: "null";
28
+ array: "array";
29
+ integer: "integer";
30
+ }>;
31
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
32
+ required: z.ZodOptional<z.ZodArray<z.ZodString>>;
33
+ items: z.ZodOptional<z.ZodUnknown>;
34
+ additionalProperties: z.ZodOptional<z.ZodLiteral<false>>;
35
+ }, z.core.$strict>;
36
+ properties: z.ZodArray<z.ZodObject<{
37
+ input: z.ZodUnknown;
38
+ expected: z.ZodUnknown;
39
+ }, z.core.$strict>>;
40
+ expectedContractRef: z.ZodDefault<z.ZodNullable<z.ZodUUID>>;
41
+ }, z.core.$strict>;
42
+ export declare const HotInstallInput: z.ZodObject<{
43
+ source: z.ZodString;
44
+ name: z.ZodString;
45
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodObject<{
46
+ binding: z.ZodString;
47
+ toolRef: z.ZodUUID;
48
+ }, z.core.$strict>>>;
49
+ contractRef: z.ZodUUID;
50
+ expectedRevision: z.ZodNumber;
51
+ }, z.core.$strict>;
52
+ export declare const HotCallInput: z.ZodObject<{
53
+ name: z.ZodString;
54
+ input: z.ZodOptional<z.ZodUnknown>;
55
+ inputRef: z.ZodOptional<z.ZodUUID>;
56
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
57
+ }, z.core.$strict>;
58
+ export declare const HotDeactivateInput: z.ZodObject<{
59
+ name: z.ZodString;
60
+ expectedRevision: z.ZodNumber;
61
+ }, z.core.$strict>;
62
+ export declare const HotStatusInput: z.ZodObject<{
63
+ name: z.ZodOptional<z.ZodString>;
64
+ offset: z.ZodDefault<z.ZodNumber>;
65
+ contractOffset: z.ZodOptional<z.ZodNumber>;
66
+ }, z.core.$strict>;
67
+ export declare const HotBundle: z.ZodObject<{
68
+ source: z.ZodString;
69
+ name: z.ZodString;
70
+ inputSchema: z.ZodObject<{
71
+ type: z.ZodEnum<{
72
+ string: "string";
73
+ number: "number";
74
+ boolean: "boolean";
75
+ object: "object";
76
+ null: "null";
77
+ array: "array";
78
+ integer: "integer";
79
+ }>;
80
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
81
+ required: z.ZodOptional<z.ZodArray<z.ZodString>>;
82
+ items: z.ZodOptional<z.ZodUnknown>;
83
+ additionalProperties: z.ZodOptional<z.ZodLiteral<false>>;
84
+ }, z.core.$strict>;
85
+ outputSchema: z.ZodObject<{
86
+ type: z.ZodEnum<{
87
+ string: "string";
88
+ number: "number";
89
+ boolean: "boolean";
90
+ object: "object";
91
+ null: "null";
92
+ array: "array";
93
+ integer: "integer";
94
+ }>;
95
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
96
+ required: z.ZodOptional<z.ZodArray<z.ZodString>>;
97
+ items: z.ZodOptional<z.ZodUnknown>;
98
+ additionalProperties: z.ZodOptional<z.ZodLiteral<false>>;
99
+ }, z.core.$strict>;
100
+ contractRef: z.ZodUUID;
101
+ }, z.core.$strict>;
102
+ export type HotContract = z.infer<typeof HotContractInput>;
103
+ export type Bundle = z.infer<typeof HotBundle>;
104
+ /** Validate JSON without silently dropping undefined, executing toJSON, or accepting cycles. */
105
+ export declare function boundedJson(value: unknown, maxBytes: number): string;
106
+ export declare function parseHotContract(value: unknown): HotContract;
107
+ export declare function parseHotBundle(value: unknown): Bundle;
108
+ //# sourceMappingURL=hot-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/hot-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,OAAO,aAAyB,CAAA;AAE7C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAGlB,CAAA;AACX,eAAO,MAAM,eAAe;;;;;;;;;kBAEjB,CAAA;AACX,eAAO,MAAM,YAAY;;;;;kBACgI,CAAA;AACzJ,eAAO,MAAM,kBAAkB;;;kBAAmE,CAAA;AAClG,eAAO,MAAM,cAAc;;;;kBAGwE,CAAA;AACnG,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmI,CAAA;AACzJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC1D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAE9C,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsBpE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAQ5D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKrD"}
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ import { fail } from './contracts.js';
3
+ import { CallInput, DefineInput, validateSchema, validateValue } from './task-tools.js';
4
+ export const HotName = DefineInput.shape.name;
5
+ const Revision = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER - 1);
6
+ export const HotContractInput = DefineInput.pick({ name: true, description: true, inputSchema: true, outputSchema: true }).extend({
7
+ properties: z.array(z.object({ input: z.unknown(), expected: z.unknown() }).strict()).min(1).max(32),
8
+ expectedContractRef: z.uuid().nullable().default(null),
9
+ }).strict();
10
+ export const HotInstallInput = DefineInput.pick({ name: true, source: true, dependencies: true }).extend({
11
+ contractRef: z.uuid(), expectedRevision: Revision,
12
+ }).strict();
13
+ export const HotCallInput = z.object({ name: HotName, input: z.unknown().optional(), inputRef: z.uuid().optional(),
14
+ fields: CallInput.shape.fields }).strict().refine(v => (v.input !== undefined) !== (v.inputRef !== undefined), 'Provide exactly one input or inputRef');
15
+ export const HotDeactivateInput = z.object({ name: HotName, expectedRevision: Revision }).strict();
16
+ export const HotStatusInput = z.object({ name: HotName.optional(), offset: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).default(0),
17
+ contractOffset: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional() }).strict()
18
+ .refine(v => v.contractOffset === undefined || v.name !== undefined, 'contractOffset requires name')
19
+ .refine(v => v.name === undefined || v.offset === 0, 'Named inspection cannot use a list offset');
20
+ export const HotBundle = DefineInput.pick({ name: true, source: true, inputSchema: true, outputSchema: true }).extend({ contractRef: z.uuid() }).strict();
21
+ /** Validate JSON without silently dropping undefined, executing toJSON, or accepting cycles. */
22
+ export function boundedJson(value, maxBytes) {
23
+ const seen = new Set();
24
+ let nodes = 0;
25
+ const visit = (item, depth) => {
26
+ if (++nodes > 100000 || depth > 24)
27
+ fail('HOT_JSON_LIMIT', 'JSONが大きすぎるか、深すぎます。');
28
+ if (item === null || typeof item === 'string' || typeof item === 'boolean')
29
+ return JSON.stringify(item);
30
+ if (typeof item === 'number' && Number.isFinite(item))
31
+ return JSON.stringify(item);
32
+ if (!item || typeof item !== 'object' || seen.has(item))
33
+ fail('HOT_JSON_INVALID', '有限のJSONデータが必要です。');
34
+ if (!Array.isArray(item) && ![Object.prototype, null].includes(Object.getPrototypeOf(item)))
35
+ fail('HOT_JSON_INVALID', 'JSON objectが必要です。');
36
+ seen.add(item);
37
+ const array = Array.isArray(item);
38
+ const keys = array ? Array.from({ length: item.length }, (_, i) => String(i)) : Object.keys(item);
39
+ const parts = keys.map(key => {
40
+ const property = Object.getOwnPropertyDescriptor(item, key);
41
+ if (!property || !('value' in property))
42
+ fail('HOT_JSON_INVALID', 'Accessorは使用できません。');
43
+ return `${array ? '' : `${JSON.stringify(key)}:`}${visit(property.value, depth + 1)}`;
44
+ });
45
+ seen.delete(item);
46
+ return array ? `[${parts.join(',')}]` : `{${parts.join(',')}}`;
47
+ };
48
+ const text = visit(value, 0);
49
+ if (Buffer.byteLength(text) > maxBytes)
50
+ fail('HOT_JSON_LIMIT', 'JSONが保存・表示上限を超えています。');
51
+ return text;
52
+ }
53
+ export function parseHotContract(value) {
54
+ const parsed = HotContractInput.parse(value);
55
+ const contract = HotContractInput.parse(JSON.parse(boundedJson(parsed, 65536)));
56
+ validateSchema(contract.inputSchema);
57
+ validateSchema(contract.outputSchema);
58
+ for (const property of contract.properties) {
59
+ validateValue(contract.inputSchema, property.input);
60
+ validateValue(contract.outputSchema, property.expected);
61
+ }
62
+ return contract;
63
+ }
64
+ export function parseHotBundle(value) {
65
+ const bundle = HotBundle.parse(value);
66
+ if (Buffer.byteLength(bundle.source) > 262144)
67
+ fail('HOT_SOURCE_LIMIT', '依存関数を含むコードが256 KiBを超えています。');
68
+ validateSchema(bundle.inputSchema);
69
+ validateSchema(bundle.outputSchema);
70
+ return HotBundle.parse(JSON.parse(boundedJson(bundle, 1048576)));
71
+ }
72
+ //# sourceMappingURL=hot-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-contracts.js","sourceRoot":"","sources":["../../../src/dsh/lisp/hot-contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { type LispOwner } from './contracts.js';
2
+ import { type Bundle, type HotContract } from './hot-contracts.js';
3
+ import type { LispStore } from './store.js';
4
+ export interface HotHead {
5
+ name: string;
6
+ revision: number;
7
+ contractRef: string;
8
+ bundleRef: string | null;
9
+ activeContractRef: string | null;
10
+ updatedAt: string;
11
+ }
12
+ /** Host-only catalog: project code never grants access to another session's journal. */
13
+ export declare class HotToolStore {
14
+ private readonly store;
15
+ constructor(store: LispStore);
16
+ status(project: string, name?: string, offset?: number): Promise<HotHead[]>;
17
+ contract(project: string, ref: string, name?: string): Promise<{
18
+ description: string;
19
+ name: string;
20
+ inputSchema: {
21
+ type: "string" | "number" | "boolean" | "object" | "null" | "array" | "integer";
22
+ properties?: Record<string, unknown> | undefined;
23
+ required?: string[] | undefined;
24
+ items?: unknown;
25
+ additionalProperties?: false | undefined;
26
+ };
27
+ outputSchema: {
28
+ type: "string" | "number" | "boolean" | "object" | "null" | "array" | "integer";
29
+ properties?: Record<string, unknown> | undefined;
30
+ required?: string[] | undefined;
31
+ items?: unknown;
32
+ additionalProperties?: false | undefined;
33
+ };
34
+ properties: {
35
+ input: unknown;
36
+ expected: unknown;
37
+ }[];
38
+ expectedContractRef: string | null;
39
+ } & {
40
+ contractRef: string;
41
+ }>;
42
+ active(project: string, name: string): Promise<{
43
+ bundleRef: string;
44
+ revision: number;
45
+ contractRef: string;
46
+ bundle: Bundle;
47
+ }>;
48
+ approve(owner: LispOwner, epoch: string, project: string, id: string, value: HotContract): Promise<{
49
+ ok: boolean;
50
+ operationId: string;
51
+ projectRoot: string;
52
+ name: string;
53
+ contractRef: `${string}-${string}-${string}-${string}-${string}`;
54
+ revision: number;
55
+ }>;
56
+ activate(owner: LispOwner, epoch: string, project: string, id: string, request: {
57
+ name: string;
58
+ contractRef: string;
59
+ expectedRevision: number;
60
+ bundle: Bundle;
61
+ }): Promise<{
62
+ ok: boolean;
63
+ operationId: string;
64
+ projectRoot: string;
65
+ name: string;
66
+ contractRef: string;
67
+ bundleRef: `${string}-${string}-${string}-${string}-${string}`;
68
+ revision: number;
69
+ checked: number;
70
+ }>;
71
+ deactivate(owner: LispOwner, epoch: string, project: string, id: string, request: {
72
+ name: string;
73
+ expectedRevision: number;
74
+ }): Promise<{
75
+ ok: boolean;
76
+ operationId: string;
77
+ projectRoot: string;
78
+ name: string;
79
+ revision: number;
80
+ bundleRef: null;
81
+ contractRef: string;
82
+ }>;
83
+ /** A call's private result and replay receipt are one commit, including quota failures. */
84
+ completeCall(owner: LispOwner, epoch: string, project: string, id: string, ref: string, payload: {
85
+ operationId: string;
86
+ bundleRef: string;
87
+ sourceRefs: string[];
88
+ }, value: unknown, response: unknown): Promise<void>;
89
+ expire(now?: Date): Promise<void>;
90
+ }
91
+ //# sourceMappingURL=hot-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-store.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/hot-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAA0D,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC1H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAK3C,MAAM,WAAW,OAAO;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AA+C/J,wFAAwF;AACxF,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IAC7C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAStE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;qBAtD+D,MAAM;;IAuDzH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAe5H,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;;;;;;;;IAiBxF,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EACnE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;IA2B1F,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE;;;;;;;;;IAe5H,2FAA2F;IAC3F,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EACpF,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9H,MAAM,CAAC,GAAG,OAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBxC"}
@@ -0,0 +1,198 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { z } from 'zod';
3
+ import { digest, fail } from './contracts.js';
4
+ import { HotName, boundedJson, parseHotBundle, parseHotContract } from './hot-contracts.js';
5
+ function head(db, project, name) {
6
+ return db.prepare('SELECT * FROM dsh_lisp_hot_heads WHERE project_root=? AND name=?').get(project, name);
7
+ }
8
+ function loadContract(db, project, ref, name) {
9
+ const row = db.prepare('SELECT * FROM dsh_lisp_hot_contracts WHERE project_root=? AND contract_ref=?').get(project, z.uuid().parse(ref));
10
+ if (!row || (name !== undefined && row.name !== name))
11
+ fail('HOT_CONTRACT_MISSING', 'このプロジェクトの承認済み条件がありません。');
12
+ const contract = parseHotContract(JSON.parse(row.payload));
13
+ if (contract.name !== row.name || digest({ project, contract }) !== row.digest)
14
+ fail('HOT_INTEGRITY', '保存された条件が変化しています。');
15
+ return { ...contract, contractRef: ref };
16
+ }
17
+ function quota(db, project, extraBytes) {
18
+ const sql = `SELECT project_root,length(CAST(payload AS BLOB)) AS bytes FROM dsh_lisp_hot_contracts
19
+ UNION ALL SELECT project_root,length(CAST(payload AS BLOB)) AS bytes FROM dsh_lisp_hot_versions`;
20
+ const local = db.prepare(`SELECT COUNT(*) AS count,COALESCE(SUM(bytes),0) AS bytes FROM (${sql}) WHERE project_root=?`).get(project);
21
+ const total = db.prepare(`SELECT COALESCE(SUM(bytes),0) AS bytes FROM (${sql})`).get();
22
+ if (local.count >= 10000 || local.bytes + extraBytes > 1024 ** 3 || total.bytes + extraBytes > 4 * 1024 ** 3)
23
+ fail('HOT_CATALOG_LIMIT', '共有コードの保存上限です。稼働版を消さずに新しい登録を停止します。');
24
+ }
25
+ function authority(db, owner, epoch, operationId, kind, project) {
26
+ const session = db.prepare('SELECT enabled,root_path,epoch FROM dsh_lisp_sessions WHERE session_id=?')
27
+ .get(owner.sessionId);
28
+ if (!session?.enabled || session.root_path !== owner.root || session.epoch !== epoch)
29
+ fail('HOT_SCOPE', 'セッションの権限または世代が変わりました。');
30
+ const operation = db.prepare('SELECT kind,state,generation,payload,result FROM dsh_lisp_operations WHERE session_id=? AND agent_id=? AND operation_id=?')
31
+ .get(owner.sessionId, owner.agentId, operationId);
32
+ const state = kind === 'lisp_hot_install' || kind === 'lisp_hot_call' ? 'RUNNING' : 'AWAITING_APPROVAL';
33
+ if (!operation || operation.kind !== kind || operation.state !== state || operation.generation !== epoch
34
+ || JSON.parse(operation.payload).projectRoot !== project)
35
+ fail('STATE_CONFLICT', '有効な操作記録がありません。');
36
+ return { payload: JSON.parse(operation.payload), result: JSON.parse(operation.result ?? '{}') };
37
+ }
38
+ function receipt(db, owner, operationId, value, maxBytes = 8192) {
39
+ const encoded = boundedJson(value, maxBytes);
40
+ const size = 'length(CAST(payload AS BLOB))+COALESCE(length(CAST(result AS BLOB)),0)';
41
+ const local = db.prepare(`SELECT COALESCE(SUM(${size}),0) AS bytes FROM dsh_lisp_operations WHERE session_id=?`).get(owner.sessionId).bytes;
42
+ const total = db.prepare(`SELECT COALESCE(SUM(${size}),0) AS bytes FROM dsh_lisp_operations`).get().bytes;
43
+ if (local + Buffer.byteLength(encoded) > 1024 ** 3 || total + Buffer.byteLength(encoded) > 4 * 1024 ** 3)
44
+ fail('JOURNAL_LIMIT', '操作結果を安全に保存できる容量がありません。');
45
+ db.prepare("UPDATE dsh_lisp_operations SET state='SUCCEEDED',result=?,updated_at=? WHERE session_id=? AND agent_id=? AND operation_id=?")
46
+ .run(encoded, new Date().toISOString(), owner.sessionId, owner.agentId, operationId);
47
+ }
48
+ function transaction(db, perform) {
49
+ db.exec('BEGIN IMMEDIATE');
50
+ try {
51
+ const result = perform();
52
+ db.exec('COMMIT');
53
+ return result;
54
+ }
55
+ catch (error) {
56
+ try {
57
+ db.exec('ROLLBACK');
58
+ }
59
+ catch { /* Preserve the COMMIT error; caller reads its durable receipt. */ }
60
+ throw error;
61
+ }
62
+ }
63
+ /** Host-only catalog: project code never grants access to another session's journal. */
64
+ export class HotToolStore {
65
+ store;
66
+ constructor(store) {
67
+ this.store = store;
68
+ }
69
+ status(project, name, offset = 0) {
70
+ if (name !== undefined)
71
+ HotName.parse(name);
72
+ return this.store.database(db => db.prepare(`SELECT h.*,v.contract_ref AS active_contract_ref FROM dsh_lisp_hot_heads h
73
+ LEFT JOIN dsh_lisp_hot_versions v ON v.bundle_ref=h.bundle_ref AND v.project_root=h.project_root
74
+ WHERE h.project_root=?${name === undefined ? '' : ' AND h.name=?'} ORDER BY h.name LIMIT 11 OFFSET ?`)
75
+ .all(project, ...(name === undefined ? [] : [name]), offset)
76
+ .map(row => ({ name: row.name, revision: row.revision, contractRef: row.contract_ref, bundleRef: row.bundle_ref,
77
+ activeContractRef: row.active_contract_ref, updatedAt: row.updated_at })));
78
+ }
79
+ contract(project, ref, name) { return this.store.database(db => loadContract(db, project, ref, name)); }
80
+ active(project, name) {
81
+ HotName.parse(name);
82
+ return this.store.database(db => {
83
+ const selected = head(db, project, name);
84
+ if (!selected?.bundle_ref)
85
+ fail('HOT_NOT_ACTIVE', 'このプロジェクトに有効な共有関数がありません。');
86
+ const row = db.prepare('SELECT * FROM dsh_lisp_hot_versions WHERE project_root=? AND bundle_ref=?').get(project, selected.bundle_ref);
87
+ if (!row)
88
+ fail('HOT_INTEGRITY', '稼働版のコードがありません。');
89
+ const bundle = parseHotBundle(JSON.parse(row.payload));
90
+ const contract = loadContract(db, project, row.contract_ref, name);
91
+ if (row.name !== name || bundle.name !== name || bundle.contractRef !== row.contract_ref
92
+ || digest({ project, bundle }) !== row.digest || digest(bundle.inputSchema) !== digest(contract.inputSchema)
93
+ || digest(bundle.outputSchema) !== digest(contract.outputSchema))
94
+ fail('HOT_INTEGRITY', '稼働版の内容が変化しています。');
95
+ return { bundleRef: selected.bundle_ref, revision: selected.revision, contractRef: row.contract_ref, bundle };
96
+ });
97
+ }
98
+ approve(owner, epoch, project, id, value) {
99
+ const contract = parseHotContract(value), payload = boundedJson(contract, 65536);
100
+ return this.store.database(db => transaction(db, () => {
101
+ const operation = authority(db, owner, epoch, id, 'lisp_hot_contract', project);
102
+ if (digest(operation.payload.request) !== digest(contract))
103
+ fail('STATE_CONFLICT', '確認画面の条件と保存対象が一致しません。');
104
+ const old = head(db, project, contract.name);
105
+ if ((old?.contract_ref ?? null) !== contract.expectedContractRef)
106
+ fail('HOT_CONTRACT_CONFLICT', '承認中に検証条件が更新されました。');
107
+ quota(db, project, Buffer.byteLength(payload));
108
+ const ref = randomUUID(), now = new Date().toISOString();
109
+ db.prepare('INSERT INTO dsh_lisp_hot_contracts VALUES(?,?,?,?,?,?,?,?)')
110
+ .run(ref, project, contract.name, digest({ project, contract }), payload, owner.sessionId, owner.agentId, now);
111
+ db.prepare(`INSERT INTO dsh_lisp_hot_heads VALUES(?,?,0,?,NULL,?) ON CONFLICT(project_root,name)
112
+ DO UPDATE SET contract_ref=excluded.contract_ref,updated_at=excluded.updated_at`).run(project, contract.name, ref, now);
113
+ const result = { ok: true, operationId: id, projectRoot: project, name: contract.name, contractRef: ref, revision: old?.revision ?? 0 };
114
+ receipt(db, owner, id, result);
115
+ return result;
116
+ }));
117
+ }
118
+ activate(owner, epoch, project, id, request) {
119
+ const bundle = parseHotBundle(request.bundle), payload = boundedJson(bundle, 1048576);
120
+ return this.store.database(db => transaction(db, () => {
121
+ const operation = authority(db, owner, epoch, id, 'lisp_hot_install', project);
122
+ if (operation.payload.name !== request.name || operation.payload.contractRef !== request.contractRef
123
+ || operation.payload.expectedRevision !== request.expectedRevision || operation.payload.sourceDigest !== digest(bundle.source))
124
+ fail('STATE_CONFLICT', '検証対象と公開対象が一致しません。');
125
+ const old = head(db, project, request.name);
126
+ if (!old || old.contract_ref !== request.contractRef)
127
+ fail('HOT_CONTRACT_CONFLICT', '検証中に承認条件が変わりました。');
128
+ if (old.revision !== request.expectedRevision || !Number.isSafeInteger(old.revision + 1))
129
+ fail('HOT_REVISION_CONFLICT', '検証中に稼働版が変わりました。');
130
+ const contract = loadContract(db, project, request.contractRef, request.name);
131
+ if (operation.result.phase !== 'checking' || operation.result.checked !== contract.properties.length || operation.result.total !== contract.properties.length)
132
+ fail('STATE_CONFLICT', 'すべての検証条件の成功記録が必要です。');
133
+ if (bundle.name !== request.name || bundle.contractRef !== request.contractRef
134
+ || digest(bundle.inputSchema) !== digest(contract.inputSchema) || digest(bundle.outputSchema) !== digest(contract.outputSchema))
135
+ fail('HOT_CONTRACT_CONFLICT', '検証したコードと承認条件が一致しません。');
136
+ quota(db, project, Buffer.byteLength(payload));
137
+ const ref = randomUUID(), now = new Date().toISOString(), revision = old.revision + 1;
138
+ db.prepare('INSERT INTO dsh_lisp_hot_versions VALUES(?,?,?,?,?,?,?)')
139
+ .run(ref, project, request.name, request.contractRef, digest({ project, bundle }), payload, now);
140
+ db.prepare('UPDATE dsh_lisp_hot_heads SET bundle_ref=?,revision=?,updated_at=? WHERE project_root=? AND name=?')
141
+ .run(ref, revision, now, project, request.name);
142
+ const result = { ok: true, operationId: id, projectRoot: project, name: request.name, contractRef: request.contractRef,
143
+ bundleRef: ref, revision, checked: contract.properties.length };
144
+ receipt(db, owner, id, result);
145
+ return result;
146
+ }));
147
+ }
148
+ deactivate(owner, epoch, project, id, request) {
149
+ return this.store.database(db => transaction(db, () => {
150
+ const operation = authority(db, owner, epoch, id, 'lisp_hot_deactivate', project);
151
+ if (operation.payload.name !== request.name || operation.payload.expectedRevision !== request.expectedRevision)
152
+ fail('STATE_CONFLICT', '確認画面の対象と無効化対象が一致しません。');
153
+ const old = head(db, project, request.name);
154
+ if (!old?.bundle_ref)
155
+ fail('HOT_NOT_ACTIVE', '稼働版がありません。');
156
+ if (old.revision !== request.expectedRevision || !Number.isSafeInteger(old.revision + 1))
157
+ fail('HOT_REVISION_CONFLICT', '承認中に稼働版が変わりました。');
158
+ const revision = old.revision + 1;
159
+ db.prepare('UPDATE dsh_lisp_hot_heads SET bundle_ref=NULL,revision=?,updated_at=? WHERE project_root=? AND name=?')
160
+ .run(revision, new Date().toISOString(), project, request.name);
161
+ const result = { ok: true, operationId: id, projectRoot: project, name: request.name, revision, bundleRef: null, contractRef: old.contract_ref };
162
+ receipt(db, owner, id, result);
163
+ return result;
164
+ }));
165
+ }
166
+ /** A call's private result and replay receipt are one commit, including quota failures. */
167
+ completeCall(owner, epoch, project, id, ref, payload, value, response) {
168
+ const resultJson = boundedJson({ value }, 64 * 1024 * 1024), payloadJson = boundedJson(payload, 1024 * 1024);
169
+ return this.store.database(db => transaction(db, () => {
170
+ const operation = authority(db, owner, epoch, id, 'lisp_hot_call', project);
171
+ if (payload.operationId !== id || payload.bundleRef !== operation.payload.bundleRef)
172
+ fail('STATE_CONFLICT', '呼び出し結果の版が一致しません。');
173
+ const usage = db.prepare('SELECT COUNT(*) AS count FROM dsh_lisp_operations WHERE session_id=?').get(owner.sessionId);
174
+ if (usage.count >= 10000)
175
+ fail('JOURNAL_LIMIT', 'Lisp 記録の件数上限です。');
176
+ db.prepare('INSERT INTO dsh_lisp_operations VALUES(?,?,?,?,?,?,?,?,?,?)').run(owner.sessionId, owner.agentId, z.uuid().parse(ref), 'task_result', digest(value), epoch, 'SUCCEEDED', payloadJson, resultJson, new Date().toISOString());
177
+ receipt(db, owner, id, response, 64 * 1024 * 1024);
178
+ }));
179
+ }
180
+ expire(now = new Date()) {
181
+ const cutoff = new Date(now.getTime() - 30 * 86400000).toISOString();
182
+ return this.store.database(db => transaction(db, () => {
183
+ db.prepare(`DELETE FROM dsh_lisp_hot_versions WHERE created_at<?
184
+ AND bundle_ref NOT IN (SELECT bundle_ref FROM dsh_lisp_hot_heads WHERE bundle_ref IS NOT NULL)
185
+ AND bundle_ref NOT IN (SELECT json_extract(payload,'$.bundleRef') FROM dsh_lisp_operations
186
+ WHERE kind='lisp_hot_call' AND state IN ('RUNNING','UNKNOWN','APPLYING','AWAITING_APPROVAL')
187
+ AND json_extract(payload,'$.bundleRef') IS NOT NULL)`).run(cutoff);
188
+ db.prepare(`DELETE FROM dsh_lisp_hot_contracts WHERE created_at<?
189
+ AND contract_ref NOT IN (SELECT contract_ref FROM dsh_lisp_hot_heads)
190
+ AND contract_ref NOT IN (SELECT contract_ref FROM dsh_lisp_hot_versions)
191
+ AND contract_ref NOT IN (SELECT json_extract(payload,'$.contractRef') FROM dsh_lisp_operations
192
+ WHERE kind='lisp_hot_install' AND state IN ('RUNNING','UNKNOWN','AWAITING_APPROVAL') AND json_extract(payload,'$.contractRef') IS NOT NULL)
193
+ AND contract_ref NOT IN (SELECT json_extract(payload,'$.request.expectedContractRef') FROM dsh_lisp_operations
194
+ WHERE kind='lisp_hot_contract' AND state IN ('RUNNING','UNKNOWN','AWAITING_APPROVAL') AND json_extract(payload,'$.request.expectedContractRef') IS NOT NULL)`).run(cutoff);
195
+ }));
196
+ }
197
+ }
198
+ //# sourceMappingURL=hot-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-store.js","sourceRoot":"","sources":["../../../src/dsh/lisp/hot-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { DshUserQuestions } from '../user-interaction.js';
2
+ import { type LispOwner, type LispTool } from './contracts.js';
3
+ import { HotToolStore } from './hot-store.js';
4
+ import { LispStore } from './store.js';
5
+ export type HotMutation = Extract<LispTool, 'lisp_hot_contract' | 'lisp_hot_install' | 'lisp_hot_call' | 'lisp_hot_deactivate'>;
6
+ interface ExecutionResult {
7
+ value: unknown;
8
+ output: unknown;
9
+ generation: string;
10
+ }
11
+ interface HotOptions {
12
+ store: LispStore;
13
+ questions?: DshUserQuestions;
14
+ projectRoot(owner: LispOwner): Promise<string>;
15
+ authorize(owner: LispOwner): Promise<void>;
16
+ run(owner: LispOwner, source: string, input: unknown, signal: AbortSignal, mode?: 'call' | 'compile'): Promise<ExecutionResult>;
17
+ input(owner: LispOwner, resultRef: string): Promise<unknown>;
18
+ }
19
+ /** Share immutable code; all dispatch, input refs and receipts retain the caller's owner. */
20
+ export declare class HotToolRuntime {
21
+ #private;
22
+ private readonly options;
23
+ readonly catalog: HotToolStore;
24
+ constructor(options: HotOptions);
25
+ cancel(sessionId?: string): void;
26
+ private scope;
27
+ status(owner: LispOwner, input?: unknown): Promise<unknown>;
28
+ execute(owner: LispOwner, tool: HotMutation, id: string, hash: string, raw: unknown, signal?: AbortSignal): Promise<unknown>;
29
+ private approve;
30
+ private contract;
31
+ private install;
32
+ private call;
33
+ private deactivate;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=hot-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-tools.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/hot-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAoC,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEhG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,eAAe,GAAG,qBAAqB,CAAC,CAAA;AAC/H,UAAU,eAAe;IAAG,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AACjF,UAAU,UAAU;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/H,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7D;AAGD,6FAA6F;AAC7F,qBAAa,cAAc;;IAGb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;gBAED,OAAO,EAAE,UAAU;IAEhD,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;YAKlB,KAAK;IAYb,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,GAAE,OAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB/D,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;YAuBpH,OAAO;YAUP,QAAQ;YAgBR,OAAO;YA2BP,IAAI;YA2BJ,UAAU;CAUzB"}