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.
- package/dist/dsh/lisp/contracts.d.ts +1 -1
- package/dist/dsh/lisp/contracts.d.ts.map +1 -1
- package/dist/dsh/lisp/contracts.js +2 -1
- package/dist/dsh/lisp/contracts.js.map +1 -1
- package/dist/dsh/lisp/hot-contracts.d.ts +108 -0
- package/dist/dsh/lisp/hot-contracts.d.ts.map +1 -0
- package/dist/dsh/lisp/hot-contracts.js +72 -0
- package/dist/dsh/lisp/hot-contracts.js.map +1 -0
- package/dist/dsh/lisp/hot-store.d.ts +91 -0
- package/dist/dsh/lisp/hot-store.d.ts.map +1 -0
- package/dist/dsh/lisp/hot-store.js +198 -0
- package/dist/dsh/lisp/hot-store.js.map +1 -0
- package/dist/dsh/lisp/hot-tools.d.ts +36 -0
- package/dist/dsh/lisp/hot-tools.d.ts.map +1 -0
- package/dist/dsh/lisp/hot-tools.js +172 -0
- package/dist/dsh/lisp/hot-tools.js.map +1 -0
- package/dist/dsh/lisp/manager.d.ts.map +1 -1
- package/dist/dsh/lisp/manager.js +28 -0
- package/dist/dsh/lisp/manager.js.map +1 -1
- package/dist/dsh/lisp/store.js +1 -1
- package/dist/dsh/lisp/store.js.map +1 -1
- package/dist/dsh/lisp/surface.d.ts +5 -0
- package/dist/dsh/lisp/surface.d.ts.map +1 -1
- package/dist/dsh/lisp/surface.js +29 -7
- package/dist/dsh/lisp/surface.js.map +1 -1
- package/dist/dsh/memory-application.js +1 -1
- package/dist/dsh/memory-application.js.map +1 -1
- package/dist/dsh/skill-prompts.json +1 -1
- package/docs/lisp-hot-tools.md +136 -0
- package/docs/lisp.md +5 -1
- package/migrations/031_dsh_lisp_hot_tools.sql +30 -0
- package/package.json +1 -1
- package/scripts/smoke-typesafe.mjs +1 -0
- 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,
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAChF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAClE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACzE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CAC7E,CAAC,CAAC,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAU,CAAA;
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAkB,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAiC,MAAM,oBAAoB,CAAA;AAQ1H,SAAS,IAAI,CAAC,EAAkB,EAAE,OAAe,EAAE,IAAY;IAC7D,OAAO,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,CAAO,OAAO,EAAE,IAAI,CAAC,CAAA;AAChH,CAAC;AACD,SAAS,YAAY,CAAC,EAAkB,EAAE,OAAe,EAAE,GAAW,EAAE,IAAa;IACnF,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAQ,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/I,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,IAAI,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAA;IAC7G,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM;QAAE,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAA;IACzH,OAAO,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAA;AAC1C,CAAC;AACD,SAAS,KAAK,CAAC,EAAkB,EAAE,OAAe,EAAE,UAAkB;IACpE,MAAM,GAAG,GAAG;oGACsF,CAAA;IAClG,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,kEAAkE,GAAG,wBAAwB,CAAC,CAAC,GAAG,CAAmC,OAAO,CAAE,CAAA;IACvK,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,GAAG,GAAG,CAAC,CAAC,GAAG,EAAsB,CAAA;IAC1G,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;QAC1G,IAAI,CAAC,mBAAmB,EAAE,mCAAmC,CAAC,CAAA;AAClE,CAAC;AACD,SAAS,SAAS,CAAC,EAAkB,EAAE,KAAgB,EAAE,KAAa,EAAE,WAAmB,EAAE,IAAY,EAAE,OAAe;IACxH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC;SACnG,GAAG,CAAwD,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9E,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAA;IAChI,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,2HAA2H,CAAC;SACtJ,GAAG,CAA8F,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAChJ,MAAM,KAAK,GAAG,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAA;IACvG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,UAAU,KAAK,KAAK;WAClG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAA8B,CAAC,WAAW,KAAK,OAAO;QACtF,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAA4B,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAA4B,EAAE,CAAA;AACvJ,CAAC;AACD,SAAS,OAAO,CAAC,EAAkB,EAAE,KAAgB,EAAE,WAAmB,EAAE,KAAc,EAAE,QAAQ,GAAG,IAAI;IACzG,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,wEAAwE,CAAA;IACrF,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,IAAI,2DAA2D,CAAC,CAAC,GAAG,CAAoB,KAAK,CAAC,SAAS,CAAE,CAAC,KAAK,CAAA;IAC/J,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,IAAI,wCAAwC,CAAC,CAAC,GAAG,EAAsB,CAAC,KAAK,CAAA;IAC7H,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;QAAE,IAAI,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAA;IACzJ,EAAE,CAAC,OAAO,CAAC,6HAA6H,CAAC;SACtI,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AACxF,CAAC;AACD,SAAS,WAAW,CAAI,EAAkB,EAAE,OAAgB;IAC1D,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC1B,IAAI,CAAC;QAAC,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAC,OAAO,MAAM,CAAA;IAAC,CAAC;IAClE,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kEAAkE,CAAC,CAAC;QAAC,MAAM,KAAK,CAAA;IAAC,CAAC;AACxI,CAAC;AAED,wFAAwF;AACxF,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;IAAG,CAAC;IACjD,MAAM,CAAC,OAAe,EAAE,IAAa,EAAE,MAAM,GAAG,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;;8BAElB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,oCAAoC,CAAC;aACrG,GAAG,CAAgD,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;aAC1G,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU;YAC7G,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;IAChF,CAAC;IACD,QAAQ,CAAC,OAAe,EAAE,GAAW,EAAE,IAAa,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA,CAAC,CAAC;IAChI,MAAM,CAAC,OAAe,EAAE,IAAY;QAClC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;YACxC,IAAI,CAAC,QAAQ,EAAE,UAAU;gBAAE,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAA;YAC5E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,GAAG,CAAU,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC9I,IAAI,CAAC,GAAG;gBAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;YACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;YAClE,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,GAAG,CAAC,YAAY;mBACnF,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;mBACzG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;YAC5G,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;QAC/G,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,CAAC,KAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAU,EAAE,KAAkB;QACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAChF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAA;YAC/E,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAA;YAC1G,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,CAAC,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC,KAAK,QAAQ,CAAC,mBAAmB;gBAAE,IAAI,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAA;YACpH,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,UAAU,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YACxD,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YAChH,EAAE,CAAC,OAAO,CAAC;wFACuE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YACzH,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAA;YACvI,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAAC,OAAO,MAAM,CAAA;QAC/C,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IACD,QAAQ,CAAC,KAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAU,EACnE,OAAwF;QACxF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACrF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;YAC9E,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW;mBAC/F,SAAS,CAAC,OAAO,CAAC,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC9H,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAA;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,KAAK,OAAO,CAAC,WAAW;gBAAE,IAAI,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAA;YACvG,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAAE,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAA;YAC1I,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC7E,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,UAAU,CAAC,MAAM;gBAC3J,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAA;YAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW;mBACzE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC/H,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAA;YACvD,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,UAAU,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAA;YACrF,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC;iBAClE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;YAClG,EAAE,CAAC,OAAO,CAAC,oGAAoG,CAAC;iBAC7G,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW;gBACpH,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;YACjE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAAC,OAAO,MAAM,CAAA;QAC/C,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IACD,UAAU,CAAC,KAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAU,EAAE,OAAmD;QAC1H,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;YACjF,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,gBAAgB,KAAK,OAAO,CAAC,gBAAgB;gBAC5G,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC3C,IAAI,CAAC,GAAG,EAAE,UAAU;gBAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;YAC1D,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAAE,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAA;YAC1I,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAA;YACjC,EAAE,CAAC,OAAO,CAAC,uGAAuG,CAAC;iBAChH,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,CAAA;YAChJ,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAAC,OAAO,MAAM,CAAA;QAC/C,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IACD,2FAA2F;IAC3F,YAAY,CAAC,KAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAU,EAAE,GAAW,EACpF,OAAyE,EAAE,KAAc,EAAE,QAAiB;QAC5G,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;QAC5G,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;YAC3E,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC,SAAS;gBAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;YAC/H,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,sEAAsE,CAAC,CAAC,GAAG,CAAoB,KAAK,CAAC,SAAS,CAAE,CAAA;YACzI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK;gBAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;YAClE,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAC/H,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;YACtG,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA;QACpD,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;QACrB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE;YACpD,EAAE,CAAC,OAAO,CAAC;;;;+DAI8C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACtE,EAAE,CAAC,OAAO,CAAC;;;;;;uKAMsJ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChL,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;CACF"}
|
|
@@ -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"}
|