kiokuko-dsh 0.2.2 → 0.2.4
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 +4 -5
- package/README.md +5 -5
- package/dist/client.cjs +225 -159
- package/dist/context/continuity-view.d.ts +1 -1
- package/dist/dsh/coding-workflow/contracts.d.ts +120 -0
- package/dist/dsh/coding-workflow/contracts.d.ts.map +1 -0
- package/dist/dsh/coding-workflow/contracts.js +77 -0
- package/dist/dsh/coding-workflow/contracts.js.map +1 -0
- package/dist/dsh/coding-workflow/host.d.ts +41 -0
- package/dist/dsh/coding-workflow/host.d.ts.map +1 -0
- package/dist/dsh/coding-workflow/host.js +235 -0
- package/dist/dsh/coding-workflow/host.js.map +1 -0
- package/dist/dsh/coding-workflow/intent.d.ts +15 -0
- package/dist/dsh/coding-workflow/intent.d.ts.map +1 -0
- package/dist/dsh/coding-workflow/intent.js +86 -0
- package/dist/dsh/coding-workflow/intent.js.map +1 -0
- package/dist/dsh/coding-workflow/service.d.ts +155 -0
- package/dist/dsh/coding-workflow/service.d.ts.map +1 -0
- package/dist/dsh/coding-workflow/service.js +282 -0
- package/dist/dsh/coding-workflow/service.js.map +1 -0
- package/dist/dsh/coding-workflow/store.d.ts +17 -0
- package/dist/dsh/coding-workflow/store.d.ts.map +1 -0
- package/dist/dsh/coding-workflow/store.js +77 -0
- package/dist/dsh/coding-workflow/store.js.map +1 -0
- package/dist/dsh/completion-verifiers.d.ts +14 -1
- package/dist/dsh/completion-verifiers.d.ts.map +1 -1
- package/dist/dsh/completion-verifiers.js.map +1 -1
- package/dist/dsh/core/host.d.ts.map +1 -1
- package/dist/dsh/core/host.js +48 -7
- package/dist/dsh/core/host.js.map +1 -1
- package/dist/dsh/core/index.js +2 -2
- package/dist/dsh/core/index.js.map +1 -1
- package/dist/dsh/core/tasks.d.ts +2 -0
- package/dist/dsh/core/tasks.d.ts.map +1 -1
- package/dist/dsh/core/tasks.js +37 -2
- package/dist/dsh/core/tasks.js.map +1 -1
- package/dist/dsh/execution-selection.d.ts +1 -1
- package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
- package/dist/dsh/host-adapter/admission.js +13 -22
- package/dist/dsh/host-adapter/admission.js.map +1 -1
- package/dist/dsh/host-adapter/boundaries.d.ts.map +1 -1
- package/dist/dsh/host-adapter/boundaries.js +2 -0
- package/dist/dsh/host-adapter/boundaries.js.map +1 -1
- package/dist/dsh/host-adapter/context.d.ts.map +1 -1
- package/dist/dsh/host-adapter/context.js +18 -13
- package/dist/dsh/host-adapter/context.js.map +1 -1
- package/dist/dsh/host-adapter/lifecycle.d.ts.map +1 -1
- package/dist/dsh/host-adapter/lifecycle.js +12 -0
- package/dist/dsh/host-adapter/lifecycle.js.map +1 -1
- package/dist/dsh/host-adapter/routing.js +1 -1
- package/dist/dsh/host-adapter/routing.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +36 -6
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/lisp/candidate.d.ts +2 -2
- package/dist/dsh/lisp/code-intelligence-contracts.d.ts +1 -1
- package/dist/dsh/lisp/coding-choice.d.ts +3 -1
- package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
- package/dist/dsh/lisp/coding-choice.js +17 -12
- package/dist/dsh/lisp/coding-choice.js.map +1 -1
- package/dist/dsh/lisp/manager.d.ts +1 -0
- package/dist/dsh/lisp/manager.d.ts.map +1 -1
- package/dist/dsh/lisp/manager.js +13 -0
- package/dist/dsh/lisp/manager.js.map +1 -1
- package/dist/dsh/lisp/request-surface.d.ts +12 -2
- package/dist/dsh/lisp/request-surface.d.ts.map +1 -1
- package/dist/dsh/lisp/request-surface.js +1 -1
- package/dist/dsh/lisp/request-surface.js.map +1 -1
- package/dist/dsh/lisp/surface.d.ts.map +1 -1
- package/dist/dsh/lisp/surface.js +46 -5
- package/dist/dsh/lisp/surface.js.map +1 -1
- package/dist/dsh/lisp-service-key.d.ts +9 -0
- package/dist/dsh/lisp-service-key.d.ts.map +1 -1
- package/dist/dsh/lisp-service-key.js +11 -0
- package/dist/dsh/lisp-service-key.js.map +1 -1
- package/dist/dsh/models/profiles.d.ts +2 -0
- package/dist/dsh/models/profiles.d.ts.map +1 -1
- package/dist/dsh/models/profiles.js +9 -5
- package/dist/dsh/models/profiles.js.map +1 -1
- package/dist/dsh/models/service.d.ts +24 -1
- package/dist/dsh/models/service.d.ts.map +1 -1
- package/dist/dsh/models/service.js +85 -42
- package/dist/dsh/models/service.js.map +1 -1
- package/dist/dsh/modules/lisp.d.ts.map +1 -1
- package/dist/dsh/modules/lisp.js +1 -12
- package/dist/dsh/modules/lisp.js.map +1 -1
- package/dist/dsh/modules/resources.d.ts +3 -1
- package/dist/dsh/modules/resources.d.ts.map +1 -1
- package/dist/dsh/modules/resources.js +4 -0
- package/dist/dsh/modules/resources.js.map +1 -1
- package/dist/dsh/node-tap-summary.d.ts +2 -0
- package/dist/dsh/node-tap-summary.d.ts.map +1 -1
- package/dist/dsh/node-tap-summary.js +6 -1
- package/dist/dsh/node-tap-summary.js.map +1 -1
- package/dist/dsh/on-demand-intake.d.ts.map +1 -1
- package/dist/dsh/on-demand-intake.js +13 -4
- package/dist/dsh/on-demand-intake.js.map +1 -1
- package/dist/dsh/owned-evidence.d.ts.map +1 -1
- package/dist/dsh/owned-evidence.js +2 -2
- package/dist/dsh/owned-evidence.js.map +1 -1
- package/dist/dsh/owned-execution.d.ts +1 -0
- package/dist/dsh/owned-execution.d.ts.map +1 -1
- package/dist/dsh/owned-execution.js +37 -2
- package/dist/dsh/owned-execution.js.map +1 -1
- package/dist/dsh/skill-prompts.json +1 -1
- package/dist/dsh/task-completion-host.js +3 -3
- package/dist/dsh/task-completion-host.js.map +1 -1
- package/dist/dsh/task-completion.d.ts +16 -0
- package/dist/dsh/task-completion.d.ts.map +1 -1
- package/dist/dsh/task-completion.js +130 -24
- package/dist/dsh/task-completion.js.map +1 -1
- package/dist/dsh/task-intake.d.ts.map +1 -1
- package/dist/dsh/task-intake.js +7 -0
- package/dist/dsh/task-intake.js.map +1 -1
- package/dist/enno-oduno/coding-workflow.d.ts +39 -0
- package/dist/enno-oduno/coding-workflow.d.ts.map +1 -0
- package/dist/enno-oduno/coding-workflow.js +33 -0
- package/dist/enno-oduno/coding-workflow.js.map +1 -0
- package/dist/enno-oduno/schemas.d.ts +2 -2
- package/dist/enno-oduno/store.d.ts.map +1 -1
- package/dist/enno-oduno/store.js +46 -3
- package/dist/enno-oduno/store.js.map +1 -1
- package/dist/enno-oduno/types.d.ts +1 -0
- package/dist/enno-oduno/types.d.ts.map +1 -1
- package/dist/enno-oduno/verifier.d.ts.map +1 -1
- package/dist/enno-oduno/verifier.js +4 -1
- package/dist/enno-oduno/verifier.js.map +1 -1
- package/dist/locale/en.json +1 -1
- package/dist/locale/ja.json +1 -1
- package/dist/locale/ko.json +1 -1
- package/dist/locale/zh-CN.json +1 -1
- package/dist/model-tools/contracts.d.ts +2 -2
- package/dist/models-client.cjs +223 -157
- package/dist/models-client.d.ts.map +1 -1
- package/dist/models-client.js +261 -166
- package/dist/models-client.js.map +1 -1
- package/docs/coding-workflow.md +45 -0
- package/docs/execution-support.md +4 -0
- package/docs/kiokuko-models.md +25 -13
- package/docs/lisp-hot-tools.md +2 -2
- package/docs/lisp.md +7 -9
- package/migrations/036_coding_workflow.sql +26 -0
- package/package.json +2 -2
- package/skills/coding-ideal-routine-skill/SKILL.md +6 -0
- package/skills/kiokuko-lisp/SKILL.md +5 -1
- package/skills/kiokuko-soul/SKILL.md +2 -2
- package/skills/one-shot-software-completion/SKILL.md +5 -6
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
export declare const CodingId: z.ZodString;
|
|
3
|
+
export declare const CodingCriterionSchema: z.ZodObject<{
|
|
4
|
+
criterionId: z.ZodString;
|
|
5
|
+
revision: z.ZodNumber;
|
|
6
|
+
outcome: z.ZodString;
|
|
7
|
+
procedure: z.ZodString;
|
|
8
|
+
expected: z.ZodString;
|
|
9
|
+
evidence: z.ZodEnum<{
|
|
10
|
+
output: "output";
|
|
11
|
+
selected_tests: "selected_tests";
|
|
12
|
+
artifact: "artifact";
|
|
13
|
+
browser: "browser";
|
|
14
|
+
enno: "enno";
|
|
15
|
+
}>;
|
|
16
|
+
}, z.core.$strict>;
|
|
17
|
+
export declare const CodingItemSchema: z.ZodObject<{
|
|
18
|
+
itemId: z.ZodString;
|
|
19
|
+
change: z.ZodString;
|
|
20
|
+
dependsOn: z.ZodArray<z.ZodString>;
|
|
21
|
+
goalCriterionIds: z.ZodArray<z.ZodString>;
|
|
22
|
+
criterionIds: z.ZodArray<z.ZodString>;
|
|
23
|
+
}, z.core.$strict>;
|
|
24
|
+
export declare const CodingGoalSchema: z.ZodObject<{
|
|
25
|
+
goalId: z.ZodString;
|
|
26
|
+
revision: z.ZodNumber;
|
|
27
|
+
ideal: z.ZodString;
|
|
28
|
+
target: z.ZodString;
|
|
29
|
+
outOfScope: z.ZodArray<z.ZodString>;
|
|
30
|
+
constraints: z.ZodArray<z.ZodString>;
|
|
31
|
+
requestBasis: z.ZodString;
|
|
32
|
+
criterionIds: z.ZodArray<z.ZodString>;
|
|
33
|
+
}, z.core.$strict>;
|
|
34
|
+
export declare const CodingDefinitionSchema: z.ZodObject<{
|
|
35
|
+
goal: z.ZodObject<{
|
|
36
|
+
goalId: z.ZodString;
|
|
37
|
+
revision: z.ZodNumber;
|
|
38
|
+
ideal: z.ZodString;
|
|
39
|
+
target: z.ZodString;
|
|
40
|
+
outOfScope: z.ZodArray<z.ZodString>;
|
|
41
|
+
constraints: z.ZodArray<z.ZodString>;
|
|
42
|
+
requestBasis: z.ZodString;
|
|
43
|
+
criterionIds: z.ZodArray<z.ZodString>;
|
|
44
|
+
}, z.core.$strict>;
|
|
45
|
+
items: z.ZodArray<z.ZodObject<{
|
|
46
|
+
itemId: z.ZodString;
|
|
47
|
+
change: z.ZodString;
|
|
48
|
+
dependsOn: z.ZodArray<z.ZodString>;
|
|
49
|
+
goalCriterionIds: z.ZodArray<z.ZodString>;
|
|
50
|
+
criterionIds: z.ZodArray<z.ZodString>;
|
|
51
|
+
}, z.core.$strict>>;
|
|
52
|
+
criteria: z.ZodArray<z.ZodObject<{
|
|
53
|
+
criterionId: z.ZodString;
|
|
54
|
+
revision: z.ZodNumber;
|
|
55
|
+
outcome: z.ZodString;
|
|
56
|
+
procedure: z.ZodString;
|
|
57
|
+
expected: z.ZodString;
|
|
58
|
+
evidence: z.ZodEnum<{
|
|
59
|
+
output: "output";
|
|
60
|
+
selected_tests: "selected_tests";
|
|
61
|
+
artifact: "artifact";
|
|
62
|
+
browser: "browser";
|
|
63
|
+
enno: "enno";
|
|
64
|
+
}>;
|
|
65
|
+
}, z.core.$strict>>;
|
|
66
|
+
}, z.core.$strict>;
|
|
67
|
+
export type CodingDefinition = z.infer<typeof CodingDefinitionSchema>;
|
|
68
|
+
export type CodingCriterion = z.infer<typeof CodingCriterionSchema>;
|
|
69
|
+
export interface CodingIdentity {
|
|
70
|
+
runId: string;
|
|
71
|
+
sessionId: string;
|
|
72
|
+
repositoryRoot: string;
|
|
73
|
+
}
|
|
74
|
+
export type CodingState = 'preparing' | 'awaiting_lisp_choice' | 'ready' | 'implementing' | 'verifying_goal' | 'completed' | 'blocked' | 'cancelled' | 'superseded';
|
|
75
|
+
export declare const CodingBlockerSchema: z.ZodObject<{
|
|
76
|
+
criterionIds: z.ZodArray<z.ZodString>;
|
|
77
|
+
kind: z.ZodEnum<{
|
|
78
|
+
input: "input";
|
|
79
|
+
runtime: "runtime";
|
|
80
|
+
permission: "permission";
|
|
81
|
+
environment: "environment";
|
|
82
|
+
unknown_effect: "unknown_effect";
|
|
83
|
+
retry_budget: "retry_budget";
|
|
84
|
+
}>;
|
|
85
|
+
cause: z.ZodString;
|
|
86
|
+
required: z.ZodString;
|
|
87
|
+
recovery: z.ZodArray<z.ZodString>;
|
|
88
|
+
resumeWhen: z.ZodString;
|
|
89
|
+
}, z.core.$strict>;
|
|
90
|
+
export type CodingBlocker = z.infer<typeof CodingBlockerSchema>;
|
|
91
|
+
export interface CodingChoice {
|
|
92
|
+
state: 'pending' | 'yes' | 'no' | 'cancelled';
|
|
93
|
+
scopeVersion: number;
|
|
94
|
+
questionId: string;
|
|
95
|
+
revision: number;
|
|
96
|
+
answerRef?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface CodingWorkflow extends CodingIdentity {
|
|
99
|
+
workflowId: string;
|
|
100
|
+
requestId: string;
|
|
101
|
+
requestDigest: string;
|
|
102
|
+
request: string;
|
|
103
|
+
revision: number;
|
|
104
|
+
scopeVersion: number;
|
|
105
|
+
state: CodingState;
|
|
106
|
+
definition?: CodingDefinition;
|
|
107
|
+
choice: CodingChoice;
|
|
108
|
+
retiredIds: string[];
|
|
109
|
+
activeItemId?: string;
|
|
110
|
+
blocker?: CodingBlocker;
|
|
111
|
+
attempts: Record<string, {
|
|
112
|
+
fingerprint: string;
|
|
113
|
+
count: number;
|
|
114
|
+
retryAt: number;
|
|
115
|
+
sourceDigest?: string;
|
|
116
|
+
}>;
|
|
117
|
+
ennoProjectionDigest?: string;
|
|
118
|
+
}
|
|
119
|
+
export declare const CODING_WORKFLOW_SERVICE = "kiokukoCodingWorkflow";
|
|
120
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/coding-workflow/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAG3B,eAAO,MAAM,QAAQ,aAA2D,CAAA;AAEhF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;kBAGvB,CAAA;AACX,eAAO,MAAM,gBAAgB;;;;;;kBAGlB,CAAA;AACX,eAAO,MAAM,gBAAgB;;;;;;;;;kBAIlB,CAAA;AAGX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgCjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE;AAC5F,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,sBAAsB,GAAG,OAAO,GAAG,cAAc,GAAG,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;AACnK,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAGrB,CAAA;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,WAAW,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IACpE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CACzD;AACD,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAC9E,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC1F,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAC3F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzG,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AACD,eAAO,MAAM,uBAAuB,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
const text = z.string().trim().min(1).max(4096);
|
|
3
|
+
export const CodingId = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/u);
|
|
4
|
+
const revision = z.number().int().min(1);
|
|
5
|
+
export const CodingCriterionSchema = z.object({
|
|
6
|
+
criterionId: CodingId, revision, outcome: text, procedure: text, expected: text,
|
|
7
|
+
evidence: z.enum(['selected_tests', 'output', 'artifact', 'browser', 'enno']),
|
|
8
|
+
}).strict();
|
|
9
|
+
export const CodingItemSchema = z.object({
|
|
10
|
+
itemId: CodingId, change: text, dependsOn: z.array(CodingId).max(64),
|
|
11
|
+
goalCriterionIds: z.array(CodingId).min(1).max(64), criterionIds: z.array(CodingId).min(1).max(64),
|
|
12
|
+
}).strict();
|
|
13
|
+
export const CodingGoalSchema = z.object({
|
|
14
|
+
goalId: CodingId, revision, ideal: text, target: text,
|
|
15
|
+
outOfScope: z.array(text).max(32), constraints: z.array(text).max(32), requestBasis: text,
|
|
16
|
+
criterionIds: z.array(CodingId).min(1).max(64),
|
|
17
|
+
}).strict();
|
|
18
|
+
const definition = z.object({ goal: CodingGoalSchema, items: z.array(CodingItemSchema).min(1).max(64),
|
|
19
|
+
criteria: z.array(CodingCriterionSchema).min(2).max(128) }).strict();
|
|
20
|
+
export const CodingDefinitionSchema = definition.superRefine((value, ctx) => {
|
|
21
|
+
const reject = (message) => ctx.addIssue({ code: 'custom', message });
|
|
22
|
+
const ids = (values) => { if (new Set(values).size !== values.length)
|
|
23
|
+
reject('Duplicate IDs'); return new Set(values); };
|
|
24
|
+
const criteria = ids(value.criteria.map(item => item.criterionId));
|
|
25
|
+
const items = ids(value.items.map(item => item.itemId));
|
|
26
|
+
ids(value.goal.criterionIds);
|
|
27
|
+
ids([value.goal.goalId, ...items, ...criteria]);
|
|
28
|
+
const referenced = new Set(value.goal.criterionIds);
|
|
29
|
+
for (const id of value.goal.criterionIds) {
|
|
30
|
+
if (!criteria.has(id))
|
|
31
|
+
reject('Missing Goal criterion');
|
|
32
|
+
if (!value.items.some(item => item.goalCriterionIds.includes(id)))
|
|
33
|
+
reject('Goal criterion has no implementing item');
|
|
34
|
+
}
|
|
35
|
+
for (const item of value.items) {
|
|
36
|
+
ids(item.dependsOn);
|
|
37
|
+
ids(item.criterionIds);
|
|
38
|
+
ids(item.goalCriterionIds);
|
|
39
|
+
for (const id of item.dependsOn)
|
|
40
|
+
if (!items.has(id))
|
|
41
|
+
reject('Missing dependency');
|
|
42
|
+
for (const id of item.goalCriterionIds)
|
|
43
|
+
if (!value.goal.criterionIds.includes(id))
|
|
44
|
+
reject('Unknown Goal criterion');
|
|
45
|
+
for (const id of item.criterionIds) {
|
|
46
|
+
referenced.add(id);
|
|
47
|
+
if (!criteria.has(id))
|
|
48
|
+
reject('Missing item criterion');
|
|
49
|
+
if (value.goal.criterionIds.includes(id))
|
|
50
|
+
reject('Final Goal check must be separate from item checks');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if ([...criteria].some(id => !referenced.has(id)))
|
|
54
|
+
reject('Unreferenced criterion');
|
|
55
|
+
const visiting = new Set(), visited = new Set();
|
|
56
|
+
const visit = (id) => {
|
|
57
|
+
if (visiting.has(id)) {
|
|
58
|
+
reject('Cyclic item dependencies');
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (visited.has(id))
|
|
62
|
+
return;
|
|
63
|
+
visiting.add(id);
|
|
64
|
+
for (const dependency of value.items.find(item => item.itemId === id)?.dependsOn ?? [])
|
|
65
|
+
visit(dependency);
|
|
66
|
+
visiting.delete(id);
|
|
67
|
+
visited.add(id);
|
|
68
|
+
};
|
|
69
|
+
for (const id of items)
|
|
70
|
+
visit(id);
|
|
71
|
+
});
|
|
72
|
+
export const CodingBlockerSchema = z.object({ criterionIds: z.array(CodingId).max(128),
|
|
73
|
+
kind: z.enum(['input', 'permission', 'environment', 'runtime', 'unknown_effect', 'retry_budget']),
|
|
74
|
+
cause: text, required: text, recovery: z.array(text).max(16), resumeWhen: text,
|
|
75
|
+
}).strict();
|
|
76
|
+
export const CODING_WORKFLOW_SERVICE = 'kiokukoCodingWorkflow';
|
|
77
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/coding-workflow/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { DshCoreRuntime } from '../core-runtime.js';
|
|
2
|
+
import type { DshUserQuestions } from '../intake-questions.js';
|
|
3
|
+
import type { LispCodingService } from '../lisp/coding-choice.js';
|
|
4
|
+
import { type CodingIdentity, type CodingWorkflow } from './contracts.js';
|
|
5
|
+
interface Execution {
|
|
6
|
+
name: string;
|
|
7
|
+
callId: string;
|
|
8
|
+
arguments: unknown;
|
|
9
|
+
agent?: any;
|
|
10
|
+
parent?: unknown;
|
|
11
|
+
signal: AbortSignal;
|
|
12
|
+
}
|
|
13
|
+
interface HostIdentity extends CodingIdentity {
|
|
14
|
+
agent: any;
|
|
15
|
+
task?: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface CodingHost {
|
|
18
|
+
runtime: DshCoreRuntime;
|
|
19
|
+
resolve(execution: Execution): HostIdentity | undefined;
|
|
20
|
+
questions?: DshUserQuestions;
|
|
21
|
+
lisp(): LispCodingService | undefined;
|
|
22
|
+
preparationOnly?(execution: Execution): boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare const CODING_GUIDANCE = "For this coding task, use coding_workflow status, then propose an ideal Goal, implementation items with dependencies, observable item criteria and a separate final user-entry Goal check. Read-only investigation may come first. The host shows the Goal/items/criteria and asks once whether to use Lisp for this task. Pending choice blocks implementation, not conversation or reads. Use next to inspect the next dependency-ready item or reopen a pending question. Bind checks with task_completion before executing them. Use host-observed selected tests, output/artifact assertions or browser assertions; exit 0 and model claims alone cannot complete this workflow. Fix failures autonomously within existing permissions. Final Goal verification must run after item checks on the current artifact. Report the Goal, evidence, ordinary-use result and remaining blockers.";
|
|
25
|
+
export declare function codingChoiceDetail(value: CodingWorkflow): string;
|
|
26
|
+
export declare function parseCodingChoice(answer: {
|
|
27
|
+
selected?: readonly string[];
|
|
28
|
+
custom?: string;
|
|
29
|
+
}): 'yes' | 'no' | 'cancelled' | undefined;
|
|
30
|
+
/** The same host seam is mounted by the suite and by the independent core. */
|
|
31
|
+
export declare function mountCodingWorkflow(ctx: {
|
|
32
|
+
tools: {
|
|
33
|
+
register(tool: any): () => void;
|
|
34
|
+
get?(name: string, agent?: any): any;
|
|
35
|
+
};
|
|
36
|
+
on(name: string, listener: (...args: any[]) => unknown, options?: {
|
|
37
|
+
prepend: boolean;
|
|
38
|
+
}): () => void;
|
|
39
|
+
}, host: CodingHost): () => void;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/dsh/coding-workflow/host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAIjE,OAAO,EAA+C,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMtH,UAAU,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE;AAC5H,UAAU,YAAa,SAAQ,cAAc;IAAG,KAAK,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE;AACvF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAA;IACvD,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,IAAI,IAAI,iBAAiB,GAAG,SAAS,CAAA;IACrC,eAAe,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAA;CAChD;AAQD,eAAO,MAAM,eAAe,o2BAAo2B,CAAA;AAEh4B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAOhE;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,CAOnI;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,IAAI,CAAC;QAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;KAAE,CAAA;IAChF,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,IAAI,CAAA;CACpG,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI,CAoJ/B"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { KiokukoError } from '../../errors.js';
|
|
3
|
+
import { foregroundNativeCommand } from '../memory-application.js';
|
|
4
|
+
import { canonicalContentHash } from '../../serialization/validate.js';
|
|
5
|
+
import { CodingBlockerSchema, CodingDefinitionSchema } from './contracts.js';
|
|
6
|
+
import { codingControlOrRead, codingControlCarrier, codingLiteralCarrier, codingIntent, documentEditIntent, documentContinuation, codingMutationTool, CODING_READ_ONLY } from './intent.js';
|
|
7
|
+
import { readCodingWorkflow } from './store.js';
|
|
8
|
+
import { answerCodingChoice, beginCodingDispatch, nextCodingWork, proposeCodingWorkflow, reportCodingBlocker, synchronizeCodingWorkflow, clearCodingRuntimeBlocker, assertCodingCommandRetry, projectEnnoCodingWorkflow, onCodingInterrupted } from './service.js';
|
|
9
|
+
const schema = z.discriminatedUnion('action', [
|
|
10
|
+
z.object({ action: z.enum(['status', 'next']) }).strict(),
|
|
11
|
+
z.object({ action: z.enum(['propose', 'revise']), expectedRevision: z.number().int().min(1), definition: CodingDefinitionSchema }).strict(),
|
|
12
|
+
z.object({ action: z.literal('report_blocker'), expectedRevision: z.number().int().min(1), blocker: CodingBlockerSchema }).strict(),
|
|
13
|
+
]);
|
|
14
|
+
const transport = z.object({ action: z.enum(['status', 'propose', 'revise', 'next', 'report_blocker']),
|
|
15
|
+
expectedRevision: z.number().int().min(1).optional(), definition: CodingDefinitionSchema.optional(), blocker: CodingBlockerSchema.optional() }).strict();
|
|
16
|
+
export const CODING_GUIDANCE = 'For this coding task, use coding_workflow status, then propose an ideal Goal, implementation items with dependencies, observable item criteria and a separate final user-entry Goal check. Read-only investigation may come first. The host shows the Goal/items/criteria and asks once whether to use Lisp for this task. Pending choice blocks implementation, not conversation or reads. Use next to inspect the next dependency-ready item or reopen a pending question. Bind checks with task_completion before executing them. Use host-observed selected tests, output/artifact assertions or browser assertions; exit 0 and model claims alone cannot complete this workflow. Fix failures autonomously within existing permissions. Final Goal verification must run after item checks on the current artifact. Report the Goal, evidence, ordinary-use result and remaining blockers.';
|
|
17
|
+
export function codingChoiceDetail(value) {
|
|
18
|
+
const definition = value.definition;
|
|
19
|
+
const criterion = (id) => { const item = definition.criteria.find(item => item.criterionId === id); return `${item.outcome} / 確認: ${item.procedure} / 期待: ${item.expected}`; };
|
|
20
|
+
return [`Goal: ${definition.goal.ideal}`, `対象: ${definition.goal.target}`,
|
|
21
|
+
...definition.items.map(item => `- ${item.change}\n${item.criterionIds.map(id => ` ${criterion(id)}`).join('\n')}`),
|
|
22
|
+
`最終確認: ${definition.goal.criterionIds.map(criterion).join('\n')}`,
|
|
23
|
+
'選択はこのタスクだけに適用します。未回答や閉じる操作では実装を開始しません。Lisp は通常の開発環境で動き、既存の権限と承認は引き続き適用されます。'].join('\n\n');
|
|
24
|
+
}
|
|
25
|
+
export function parseCodingChoice(answer) {
|
|
26
|
+
if ((answer.selected?.length ?? 0) > 1)
|
|
27
|
+
return undefined;
|
|
28
|
+
const text = (answer.custom?.trim() || answer.selected?.[0] || '').trim();
|
|
29
|
+
if (/^(?:1|使う|yes|use lisp|Lispモードを使う(通常実行))$/iu.test(text))
|
|
30
|
+
return 'yes';
|
|
31
|
+
if (/^(?:2|使わない|no|do not use lisp|Lispモードを使わない)$/iu.test(text))
|
|
32
|
+
return 'no';
|
|
33
|
+
if (/^(?:3|取消|キャンセル|cancel|取消・作業を保持)$/iu.test(text))
|
|
34
|
+
return 'cancelled';
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
/** The same host seam is mounted by the suite and by the independent core. */
|
|
38
|
+
export function mountCodingWorkflow(ctx, host) {
|
|
39
|
+
const questions = new Map();
|
|
40
|
+
const controllers = new Map();
|
|
41
|
+
const scopes = new WeakMap();
|
|
42
|
+
const current = (identity, execution) => {
|
|
43
|
+
const resolved = host.resolve(execution);
|
|
44
|
+
if (!resolved || resolved.runId !== identity.runId || resolved.sessionId !== identity.sessionId || resolved.agent !== identity.agent)
|
|
45
|
+
throw new KiokukoError('CONFLICT', 'Coding task changed while awaiting an answer');
|
|
46
|
+
};
|
|
47
|
+
const choose = async (identity, execution) => {
|
|
48
|
+
await host.runtime.withDatabase(db => projectEnnoCodingWorkflow(db, identity));
|
|
49
|
+
const value = await host.runtime.withDatabase(db => readCodingWorkflow(db, identity.runId));
|
|
50
|
+
if (!value?.definition || ['cancelled', 'superseded', 'completed'].includes(value.state))
|
|
51
|
+
return;
|
|
52
|
+
if (value.choice.state !== 'pending') {
|
|
53
|
+
if (value.choice.state === 'yes') {
|
|
54
|
+
try {
|
|
55
|
+
const lisp = host.lisp();
|
|
56
|
+
if (!lisp?.activate)
|
|
57
|
+
throw new Error('Selected Lisp runtime is unavailable');
|
|
58
|
+
await lisp.activate(identity.agent);
|
|
59
|
+
await host.runtime.withDatabase(db => clearCodingRuntimeBlocker(db, identity));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
const latest = await host.runtime.withDatabase(db => readCodingWorkflow(db, identity.runId));
|
|
63
|
+
if (latest?.scopeVersion === value.scopeVersion)
|
|
64
|
+
await host.runtime.withDatabase(db => reportCodingBlocker(db, identity, `startup-retry:${latest.revision}`, latest.revision, {
|
|
65
|
+
criterionIds: [], kind: 'runtime', cause: String(error), required: 'Restore Lisp or explicitly change this task’s route', recovery: [], resumeWhen: 'Lisp startup succeeds',
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
await host.lisp()?.exclude?.(identity.agent);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (!host.questions)
|
|
74
|
+
return; // Durable pending; never invent a default.
|
|
75
|
+
const key = `${value.workflowId}:${value.scopeVersion}`;
|
|
76
|
+
const existing = questions.get(key);
|
|
77
|
+
if (existing)
|
|
78
|
+
return existing;
|
|
79
|
+
const operation = (async () => {
|
|
80
|
+
let response;
|
|
81
|
+
try {
|
|
82
|
+
response = await host.questions.ask({ agent: identity.agent, signal: execution.signal, questions: [{
|
|
83
|
+
id: value.choice.questionId, header: 'Goal と実装項目', question: 'このタスクで Lisp モードを使いますか?',
|
|
84
|
+
detail: codingChoiceDetail(value), options: ['使う', '使わない', '取消・作業を保持'].map(label => ({ label })),
|
|
85
|
+
}] });
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
execution.signal.throwIfAborted();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
execution.signal.throwIfAborted();
|
|
92
|
+
current(identity, execution);
|
|
93
|
+
const answer = response.answers?.[0];
|
|
94
|
+
if (!answer || answer.id !== value.choice.questionId)
|
|
95
|
+
return;
|
|
96
|
+
const choice = parseCodingChoice(answer);
|
|
97
|
+
if (!choice)
|
|
98
|
+
return;
|
|
99
|
+
const saved = await host.runtime.withDatabase(db => answerCodingChoice(db, identity, {
|
|
100
|
+
callId: `human:${value.choice.questionId}:${canonicalContentHash(answer)}`, expectedRevision: value.revision,
|
|
101
|
+
workflowId: value.workflowId, scopeVersion: value.scopeVersion, questionId: value.choice.questionId,
|
|
102
|
+
questionRevision: value.choice.revision, answerRef: `userQuestions:${value.choice.questionId}:${canonicalContentHash(answer)}`, choice,
|
|
103
|
+
}));
|
|
104
|
+
current(identity, execution);
|
|
105
|
+
if (choice === 'cancelled') {
|
|
106
|
+
controllers.get(identity.runId)?.controller.abort(new Error('Coding task cancelled'));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (choice === 'no') {
|
|
110
|
+
await host.lisp()?.exclude?.(identity.agent);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const lisp = host.lisp();
|
|
115
|
+
if (!lisp?.activate)
|
|
116
|
+
throw new Error('Lisp runtime is unavailable. Keep this task pending recovery or explicitly select another route.');
|
|
117
|
+
await lisp.activate(identity.agent);
|
|
118
|
+
await host.runtime.withDatabase(db => clearCodingRuntimeBlocker(db, identity));
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
const latest = await host.runtime.withDatabase(db => readCodingWorkflow(db, identity.runId));
|
|
122
|
+
if (latest?.scopeVersion === saved.scopeVersion && latest.choice.state === 'yes')
|
|
123
|
+
await host.runtime.withDatabase(db => reportCodingBlocker(db, identity, `startup:${latest.revision}`, latest.revision, {
|
|
124
|
+
criterionIds: [], kind: 'runtime', cause: error instanceof Error ? error.message : String(error),
|
|
125
|
+
required: 'Restore the selected Lisp runtime or explicitly change this task’s execution route', recovery: [], resumeWhen: 'Lisp startup succeeds',
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
})();
|
|
129
|
+
questions.set(key, operation);
|
|
130
|
+
try {
|
|
131
|
+
await operation;
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
if (questions.get(key) === operation)
|
|
135
|
+
questions.delete(key);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const definitions = [];
|
|
139
|
+
definitions.push(onCodingInterrupted(runId => controllers.get(runId)?.controller.abort(new Error('Coding task stopped'))));
|
|
140
|
+
const definition = { name: 'coding_workflow', modelFacing: true, description: CODING_GUIDANCE,
|
|
141
|
+
parameters: JSON.parse(JSON.stringify(z.toJSONSchema(transport, { unrepresentable: 'any' }))),
|
|
142
|
+
output: { schema: {}, render: (_, result) => [{ type: 'text', text: JSON.stringify(result) }] },
|
|
143
|
+
execute: async (raw, execution) => {
|
|
144
|
+
const identity = host.resolve(execution);
|
|
145
|
+
if (!identity || execution.name !== 'coding_workflow')
|
|
146
|
+
throw new KiokukoError('CONFLICT', 'Coding workflow requires this active native task');
|
|
147
|
+
const input = schema.parse(raw);
|
|
148
|
+
execution.signal.throwIfAborted();
|
|
149
|
+
if (input.action === 'propose' || input.action === 'revise') {
|
|
150
|
+
const before = await host.runtime.withDatabase(db => readCodingWorkflow(db, identity.runId));
|
|
151
|
+
const updated = await host.runtime.withDatabase(db => proposeCodingWorkflow(db, identity, execution.callId, input.expectedRevision, input.definition, input.action === 'revise'));
|
|
152
|
+
if (before?.scopeVersion !== updated.scopeVersion)
|
|
153
|
+
controllers.get(identity.runId)?.controller.abort(new Error('Coding scope changed'));
|
|
154
|
+
await choose(identity, execution);
|
|
155
|
+
}
|
|
156
|
+
else if (input.action === 'report_blocker') {
|
|
157
|
+
await host.runtime.withDatabase(db => reportCodingBlocker(db, identity, execution.callId, input.expectedRevision, input.blocker));
|
|
158
|
+
}
|
|
159
|
+
else if (input.action === 'next')
|
|
160
|
+
await choose(identity, execution);
|
|
161
|
+
current(identity, execution);
|
|
162
|
+
return host.runtime.withDatabase(db => { synchronizeCodingWorkflow(db, identity.runId); return nextCodingWork(db, identity); });
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
definitions.push(ctx.tools.register(definition));
|
|
166
|
+
definitions.push(ctx.on('tools/pre-execute', async (execution, next) => {
|
|
167
|
+
const identity = host.resolve(execution);
|
|
168
|
+
if (!identity || host.preparationOnly?.(execution))
|
|
169
|
+
return next();
|
|
170
|
+
const carrier = codingLiteralCarrier(execution.name, execution.arguments);
|
|
171
|
+
if (codingControlOrRead(execution.name) || codingControlCarrier(execution.name, execution.arguments)
|
|
172
|
+
|| carrier && ctx.tools.get?.(carrier, identity.agent)?.[CODING_READ_ONLY] === true
|
|
173
|
+
|| ctx.tools.get?.(execution.name, identity.agent)?.[CODING_READ_ONLY] === true)
|
|
174
|
+
return next();
|
|
175
|
+
const workflow = await host.runtime.withDatabase(db => readCodingWorkflow(db, identity.runId));
|
|
176
|
+
// Arbitrary process/extension tools cannot be proved read-only by their name.
|
|
177
|
+
if (!workflow) {
|
|
178
|
+
const resumedDocument = identity.task && documentContinuation(identity.task)
|
|
179
|
+
&& await host.runtime.withDatabase(db => {
|
|
180
|
+
const original = db.prepare('SELECT title FROM ledger_runs WHERE run_id=? AND dsh_session_id=?')
|
|
181
|
+
.get(identity.runId, identity.sessionId);
|
|
182
|
+
return !!original && documentEditIntent(original.title);
|
|
183
|
+
});
|
|
184
|
+
if (identity.task && !codingIntent(identity.task) && codingMutationTool(execution.name)
|
|
185
|
+
&& !documentEditIntent(identity.task)
|
|
186
|
+
&& !resumedDocument
|
|
187
|
+
&& !/(?:\b(?:write|create|save|draft|deploy|restart|install|run|execute|verify|test)\b|(?:保存|作成|配備|再起動|インストール|実行|検証)(?:して|し、|してください))/iu.test(identity.task))
|
|
188
|
+
return { kind: 'deny', reason: 'The original human request does not authorize implementation. Use read-only tools or clarify the requested action.' };
|
|
189
|
+
return next();
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
const value = await host.runtime.withDatabase(db => beginCodingDispatch(db, identity, execution.callId, execution.name));
|
|
193
|
+
if (value) {
|
|
194
|
+
const command = foregroundNativeCommand(execution, identity.repositoryRoot);
|
|
195
|
+
if (command)
|
|
196
|
+
await host.runtime.withDatabase(db => assertCodingCommandRetry(db, identity, command));
|
|
197
|
+
scopes.set(execution, { scopeVersion: value.scopeVersion, identity, execute: ctx.tools.get?.(execution.name, identity.agent)?.execute });
|
|
198
|
+
let active = controllers.get(identity.runId);
|
|
199
|
+
if (!active || active.scope !== value.scopeVersion || active.controller.signal.aborted) {
|
|
200
|
+
active = { scope: value.scopeVersion, controller: new AbortController() };
|
|
201
|
+
controllers.set(identity.runId, active);
|
|
202
|
+
}
|
|
203
|
+
execution.signal = AbortSignal.any([execution.signal, active.controller.signal]);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return { kind: 'deny', reason: error instanceof Error ? error.message : String(error) };
|
|
208
|
+
}
|
|
209
|
+
return next();
|
|
210
|
+
}, { prepend: true }));
|
|
211
|
+
definitions.push(ctx.on('tools/execute', async (execution, next) => {
|
|
212
|
+
const scope = scopes.get(execution);
|
|
213
|
+
if (scope) {
|
|
214
|
+
current(scope.identity, execution);
|
|
215
|
+
const value = await host.runtime.withDatabase(db => readCodingWorkflow(db, scope.identity.runId));
|
|
216
|
+
if (!value || value.scopeVersion !== scope.scopeVersion || ['cancelled', 'superseded'].includes(value.state)
|
|
217
|
+
|| ctx.tools.get?.(execution.name, scope.identity.agent)?.execute !== scope.execute)
|
|
218
|
+
throw new KiokukoError('CONFLICT', 'Coding dispatch changed during native approval');
|
|
219
|
+
execution.signal.throwIfAborted();
|
|
220
|
+
}
|
|
221
|
+
return next();
|
|
222
|
+
}, { prepend: true }));
|
|
223
|
+
definitions.push(ctx.on('tools/result', async (execution) => {
|
|
224
|
+
const identity = host.resolve(execution);
|
|
225
|
+
if (identity) {
|
|
226
|
+
if (['enno_plan_submit', 'enno_plan_review'].includes(execution.name))
|
|
227
|
+
await choose(identity, execution);
|
|
228
|
+
await host.runtime.withDatabase(db => synchronizeCodingWorkflow(db, identity.runId));
|
|
229
|
+
}
|
|
230
|
+
}));
|
|
231
|
+
return () => { for (const active of controllers.values())
|
|
232
|
+
active.controller.abort(new Error('Coding host stopped')); for (const dispose of definitions.reverse())
|
|
233
|
+
dispose(); };
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/dsh/coding-workflow/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** An explicit README text edit stays on the document path unless code/config is also requested. */
|
|
2
|
+
export declare function documentEditIntent(task: string): boolean;
|
|
3
|
+
/** Legacy document recovery may use a short, unambiguous human continuation. */
|
|
4
|
+
export declare function documentContinuation(task: string): boolean;
|
|
5
|
+
/** Conservative human intent evidence, independent of advisory task labels. */
|
|
6
|
+
export declare function codingIntent(task: string): boolean;
|
|
7
|
+
/** Explicit continuation preserves the old task; a new action gets a new choice. */
|
|
8
|
+
export declare function codingContinuation(task: string): boolean;
|
|
9
|
+
export declare function codingControlOrRead(name: string): boolean;
|
|
10
|
+
export declare function codingControlCarrier(name: string, arguments_: unknown): boolean;
|
|
11
|
+
export declare function codingLiteralCarrier(name: string, arguments_: unknown): string | undefined;
|
|
12
|
+
/** Extension authors may mark their pinned host definition as a read operation. */
|
|
13
|
+
export declare const CODING_READ_ONLY: unique symbol;
|
|
14
|
+
export declare function codingMutationTool(name: string): boolean;
|
|
15
|
+
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/dsh/coding-workflow/intent.ts"],"names":[],"mappings":"AAEA,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMxD;AACD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBlD;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxD;AAMD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAA6B;AACvF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAG/E;AACD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU1F;AACD,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,eAAyC,CAAA;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { executionClarification } from '../intake-clarification.js';
|
|
2
|
+
/** An explicit README text edit stays on the document path unless code/config is also requested. */
|
|
3
|
+
export function documentEditIntent(task) {
|
|
4
|
+
if (!/\bREADME(?:\.(?:md|rst|txt))?\b/iu.test(task)
|
|
5
|
+
|| /(?:\.(?:[cm]?[jt]sx?|svelte|py|lisp|json|ya?ml|toml)\b|\b(?:code|runtime|config|behavior|function|api)\b|コード|挙動|関数|設定)/iu.test(task)
|
|
6
|
+
|| /(?:\b(?:do not|don't|never|explain|describe|what|why|how|should)\b|(?:修正|変更|編集)(?:しない|するな|すべき)|[??]|^\s*[>"“「`~])/imu.test(task))
|
|
7
|
+
return false;
|
|
8
|
+
return /^(?:(?:please|can you|could you|would you|help me)\s+)?(?:edit|revise|fix|repair|modify|update|write|create|add)\b/iu.test(task.trim())
|
|
9
|
+
|| /(?:修正|変更|編集|追記)(?:して|してください|も実装して)/u.test(task);
|
|
10
|
+
}
|
|
11
|
+
/** Legacy document recovery may use a short, unambiguous human continuation. */
|
|
12
|
+
export function documentContinuation(task) {
|
|
13
|
+
return /^(?:(?:please\s+)?(?:continue|resume)|続けて(?:ください)?|続行してください)[.!。!]?$/iu.test(task.trim());
|
|
14
|
+
}
|
|
15
|
+
/** Conservative human intent evidence, independent of advisory task labels. */
|
|
16
|
+
export function codingIntent(task) {
|
|
17
|
+
let fence;
|
|
18
|
+
const lines = [];
|
|
19
|
+
for (const line of task.split('\n')) {
|
|
20
|
+
const marker = line.match(/^\s*(`{3,}|~{3,})/u)?.[1];
|
|
21
|
+
if (marker) {
|
|
22
|
+
if (!fence)
|
|
23
|
+
fence = marker;
|
|
24
|
+
else if (marker[0] === fence[0] && marker.length >= fence.length)
|
|
25
|
+
fence = undefined;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (!fence && !/^\s*(?:>|["“「]|(?:read|write) paths\s*:)/iu.test(line))
|
|
29
|
+
lines.push(line.trim());
|
|
30
|
+
}
|
|
31
|
+
const request = lines.join('\n');
|
|
32
|
+
if (executionClarification(request))
|
|
33
|
+
return false;
|
|
34
|
+
if (documentEditIntent(request))
|
|
35
|
+
return false;
|
|
36
|
+
if (/\b(?:write|create|draft)\s+(?:an?\s+)?(?:email|letter|message|report|document|post)\b/iu.test(request)
|
|
37
|
+
|| /(?:案内文|メール|記事|文章|文書|レポート)を(?:書|作|保存)/u.test(request))
|
|
38
|
+
return false;
|
|
39
|
+
if (/(?:\b(?:do not|don't|never)\s+(?:implement|change|edit|fix|write|modify)|コード変更は行わない|(?:実装|変更|修正)(?:しない|するな|は不要))/iu.test(request))
|
|
40
|
+
return false;
|
|
41
|
+
if (/^(?:explain|describe|what|why|how|should\s+(?:we|i)|is\s+it|(?:can|could)\s+(?:this|it))\b/iu.test(request)
|
|
42
|
+
|| /(?:修正すべき|実装すべき|(?:説明|解説)(?:して|しろ)|(?:計画|プラン)(?:だけ|のみ)|(?:計画|プラン)を(?:作|立))/u.test(request))
|
|
43
|
+
return false;
|
|
44
|
+
return lines.some(line => /^(?:(?:please|can you|could you|would you|help me|i want you to)\s+)?(?:implement|fix|repair|add|create|build|refactor|update|modify|change|write)\b/iu.test(line)
|
|
45
|
+
|| /(?:実装して|実装しろ|修正して|直して|追加して|変更して|作って|作成して|更新して|リファクタリングして)/u.test(line));
|
|
46
|
+
}
|
|
47
|
+
/** Explicit continuation preserves the old task; a new action gets a new choice. */
|
|
48
|
+
export function codingContinuation(task) {
|
|
49
|
+
return /^(?:please\s+)?(?:continue|resume)(?:\s+(?:the|this|my))?\s+(?:(?:current|same|previous)\s+)?task(?:\s+without changing its scope)?[.!。!]?$/iu.test(task.trim())
|
|
50
|
+
|| /^(?:この|同じ|現在の|前の)?(?:タスク|作業)(?:を)?(?:再開|続行|継続)(?:して|してください)[。!!]?$/u.test(task.trim());
|
|
51
|
+
}
|
|
52
|
+
const readers = new Set(['read', 'glob', 'grep', 'skill', 'web_search', 'web_fetch', 'kioku_read', 'kioku_result',
|
|
53
|
+
'task_memory_review', 'task_completion', 'coding_workflow', 'prepare_requested_work', 'ask_user_question',
|
|
54
|
+
'exit_plan_mode', 'lisp_status', 'lisp_hot_status', 'lisp_describe', 'lisp_inspect', 'lisp_cancel', 'observation_read',
|
|
55
|
+
'enno_ideal_submit', 'enno_plan_submit', 'enno_plan_review', 'enno_finish', 'enno_meditation_submit', 'memory_checkpoint', 'curator_check']);
|
|
56
|
+
export function codingControlOrRead(name) { return readers.has(name); }
|
|
57
|
+
export function codingControlCarrier(name, arguments_) {
|
|
58
|
+
const tool = codingLiteralCarrier(name, arguments_);
|
|
59
|
+
return tool !== undefined && codingControlOrRead(tool);
|
|
60
|
+
}
|
|
61
|
+
export function codingLiteralCarrier(name, arguments_) {
|
|
62
|
+
if (name !== 'run_code' || !arguments_ || typeof arguments_ !== 'object')
|
|
63
|
+
return undefined;
|
|
64
|
+
const code = arguments_.code;
|
|
65
|
+
if (typeof code !== 'string')
|
|
66
|
+
return undefined;
|
|
67
|
+
const source = code.trim();
|
|
68
|
+
const match = source.startsWith('return JSON.stringify(')
|
|
69
|
+
? source.match(/^return JSON\.stringify\(await tools\.([a-z_]+)\((.*)\)\);?$/u)
|
|
70
|
+
: source.match(/^return await tools\.([a-z_]+)\((.*)\);?$/u);
|
|
71
|
+
if (!match)
|
|
72
|
+
return undefined;
|
|
73
|
+
try {
|
|
74
|
+
const input = JSON.parse(match[2]);
|
|
75
|
+
return input !== null && typeof input === 'object' && !Array.isArray(input) ? match[1] : undefined;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/** Extension authors may mark their pinned host definition as a read operation. */
|
|
82
|
+
export const CODING_READ_ONLY = Symbol.for('kiokuko.coding.read-only');
|
|
83
|
+
export function codingMutationTool(name) {
|
|
84
|
+
return /^(?:kioku_(?:write|edit|remove|exec)|lisp_(?!status|hot_status|inspect|cancel)|run_code|bash|zsh|exec|write|edit|delete|remove)/u.test(name);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=intent.js.map
|