kiokuko-dsh 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.ja.md +4 -5
  2. package/README.md +5 -5
  3. package/dist/client.cjs +2 -2
  4. package/dist/context/continuity-view.d.ts +1 -1
  5. package/dist/dsh/coding-workflow/contracts.d.ts +120 -0
  6. package/dist/dsh/coding-workflow/contracts.d.ts.map +1 -0
  7. package/dist/dsh/coding-workflow/contracts.js +77 -0
  8. package/dist/dsh/coding-workflow/contracts.js.map +1 -0
  9. package/dist/dsh/coding-workflow/host.d.ts +41 -0
  10. package/dist/dsh/coding-workflow/host.d.ts.map +1 -0
  11. package/dist/dsh/coding-workflow/host.js +235 -0
  12. package/dist/dsh/coding-workflow/host.js.map +1 -0
  13. package/dist/dsh/coding-workflow/intent.d.ts +15 -0
  14. package/dist/dsh/coding-workflow/intent.d.ts.map +1 -0
  15. package/dist/dsh/coding-workflow/intent.js +86 -0
  16. package/dist/dsh/coding-workflow/intent.js.map +1 -0
  17. package/dist/dsh/coding-workflow/service.d.ts +155 -0
  18. package/dist/dsh/coding-workflow/service.d.ts.map +1 -0
  19. package/dist/dsh/coding-workflow/service.js +282 -0
  20. package/dist/dsh/coding-workflow/service.js.map +1 -0
  21. package/dist/dsh/coding-workflow/store.d.ts +17 -0
  22. package/dist/dsh/coding-workflow/store.d.ts.map +1 -0
  23. package/dist/dsh/coding-workflow/store.js +77 -0
  24. package/dist/dsh/coding-workflow/store.js.map +1 -0
  25. package/dist/dsh/completion-verifiers.d.ts +14 -1
  26. package/dist/dsh/completion-verifiers.d.ts.map +1 -1
  27. package/dist/dsh/completion-verifiers.js.map +1 -1
  28. package/dist/dsh/core/host.d.ts.map +1 -1
  29. package/dist/dsh/core/host.js +48 -7
  30. package/dist/dsh/core/host.js.map +1 -1
  31. package/dist/dsh/core/index.js +2 -2
  32. package/dist/dsh/core/index.js.map +1 -1
  33. package/dist/dsh/core/tasks.d.ts +2 -0
  34. package/dist/dsh/core/tasks.d.ts.map +1 -1
  35. package/dist/dsh/core/tasks.js +37 -2
  36. package/dist/dsh/core/tasks.js.map +1 -1
  37. package/dist/dsh/execution-selection.d.ts +1 -1
  38. package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
  39. package/dist/dsh/host-adapter/admission.js +13 -22
  40. package/dist/dsh/host-adapter/admission.js.map +1 -1
  41. package/dist/dsh/host-adapter/boundaries.d.ts.map +1 -1
  42. package/dist/dsh/host-adapter/boundaries.js +2 -0
  43. package/dist/dsh/host-adapter/boundaries.js.map +1 -1
  44. package/dist/dsh/host-adapter/context.d.ts.map +1 -1
  45. package/dist/dsh/host-adapter/context.js +18 -13
  46. package/dist/dsh/host-adapter/context.js.map +1 -1
  47. package/dist/dsh/host-adapter/lifecycle.d.ts.map +1 -1
  48. package/dist/dsh/host-adapter/lifecycle.js +12 -0
  49. package/dist/dsh/host-adapter/lifecycle.js.map +1 -1
  50. package/dist/dsh/host-adapter/routing.js +1 -1
  51. package/dist/dsh/host-adapter/routing.js.map +1 -1
  52. package/dist/dsh/host-adapter.d.ts.map +1 -1
  53. package/dist/dsh/host-adapter.js +36 -6
  54. package/dist/dsh/host-adapter.js.map +1 -1
  55. package/dist/dsh/lisp/candidate.d.ts +2 -2
  56. package/dist/dsh/lisp/code-intelligence-contracts.d.ts +1 -1
  57. package/dist/dsh/lisp/coding-choice.d.ts +3 -1
  58. package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
  59. package/dist/dsh/lisp/coding-choice.js +17 -12
  60. package/dist/dsh/lisp/coding-choice.js.map +1 -1
  61. package/dist/dsh/lisp/manager.d.ts +1 -0
  62. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  63. package/dist/dsh/lisp/manager.js +13 -0
  64. package/dist/dsh/lisp/manager.js.map +1 -1
  65. package/dist/dsh/lisp/request-surface.d.ts +12 -2
  66. package/dist/dsh/lisp/request-surface.d.ts.map +1 -1
  67. package/dist/dsh/lisp/request-surface.js +1 -1
  68. package/dist/dsh/lisp/request-surface.js.map +1 -1
  69. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  70. package/dist/dsh/lisp/surface.js +46 -5
  71. package/dist/dsh/lisp/surface.js.map +1 -1
  72. package/dist/dsh/lisp-service-key.d.ts +9 -0
  73. package/dist/dsh/lisp-service-key.d.ts.map +1 -1
  74. package/dist/dsh/lisp-service-key.js +11 -0
  75. package/dist/dsh/lisp-service-key.js.map +1 -1
  76. package/dist/dsh/modules/lisp.d.ts.map +1 -1
  77. package/dist/dsh/modules/lisp.js +1 -12
  78. package/dist/dsh/modules/lisp.js.map +1 -1
  79. package/dist/dsh/modules/resources.d.ts +3 -1
  80. package/dist/dsh/modules/resources.d.ts.map +1 -1
  81. package/dist/dsh/modules/resources.js +4 -0
  82. package/dist/dsh/modules/resources.js.map +1 -1
  83. package/dist/dsh/node-tap-summary.d.ts +2 -0
  84. package/dist/dsh/node-tap-summary.d.ts.map +1 -1
  85. package/dist/dsh/node-tap-summary.js +6 -1
  86. package/dist/dsh/node-tap-summary.js.map +1 -1
  87. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  88. package/dist/dsh/on-demand-intake.js +13 -4
  89. package/dist/dsh/on-demand-intake.js.map +1 -1
  90. package/dist/dsh/owned-evidence.d.ts.map +1 -1
  91. package/dist/dsh/owned-evidence.js +2 -2
  92. package/dist/dsh/owned-evidence.js.map +1 -1
  93. package/dist/dsh/owned-execution.d.ts +1 -0
  94. package/dist/dsh/owned-execution.d.ts.map +1 -1
  95. package/dist/dsh/owned-execution.js +37 -2
  96. package/dist/dsh/owned-execution.js.map +1 -1
  97. package/dist/dsh/skill-prompts.json +1 -1
  98. package/dist/dsh/task-completion-host.js +3 -3
  99. package/dist/dsh/task-completion-host.js.map +1 -1
  100. package/dist/dsh/task-completion.d.ts +16 -0
  101. package/dist/dsh/task-completion.d.ts.map +1 -1
  102. package/dist/dsh/task-completion.js +130 -24
  103. package/dist/dsh/task-completion.js.map +1 -1
  104. package/dist/dsh/task-intake.d.ts.map +1 -1
  105. package/dist/dsh/task-intake.js +7 -0
  106. package/dist/dsh/task-intake.js.map +1 -1
  107. package/dist/enno-oduno/coding-workflow.d.ts +39 -0
  108. package/dist/enno-oduno/coding-workflow.d.ts.map +1 -0
  109. package/dist/enno-oduno/coding-workflow.js +33 -0
  110. package/dist/enno-oduno/coding-workflow.js.map +1 -0
  111. package/dist/enno-oduno/schemas.d.ts +2 -2
  112. package/dist/enno-oduno/store.d.ts.map +1 -1
  113. package/dist/enno-oduno/store.js +46 -3
  114. package/dist/enno-oduno/store.js.map +1 -1
  115. package/dist/enno-oduno/types.d.ts +1 -0
  116. package/dist/enno-oduno/types.d.ts.map +1 -1
  117. package/dist/enno-oduno/verifier.d.ts.map +1 -1
  118. package/dist/enno-oduno/verifier.js +4 -1
  119. package/dist/enno-oduno/verifier.js.map +1 -1
  120. package/dist/locale/en.json +1 -1
  121. package/dist/locale/ja.json +1 -1
  122. package/dist/locale/ko.json +1 -1
  123. package/dist/locale/zh-CN.json +1 -1
  124. package/dist/model-tools/contracts.d.ts +2 -2
  125. package/docs/coding-workflow.md +45 -0
  126. package/docs/execution-support.md +4 -0
  127. package/docs/lisp-hot-tools.md +2 -2
  128. package/docs/lisp.md +7 -9
  129. package/migrations/036_coding_workflow.sql +26 -0
  130. package/package.json +2 -2
  131. package/skills/coding-ideal-routine-skill/SKILL.md +6 -0
  132. package/skills/kiokuko-lisp/SKILL.md +5 -1
  133. package/skills/kiokuko-soul/SKILL.md +2 -2
  134. package/skills/one-shot-software-completion/SKILL.md +5 -6
package/README.ja.md CHANGED
@@ -88,8 +88,8 @@ DSH 更新後に Kiokuko を読み込めない場合は、[起動失敗時の復
88
88
  - Arch Linux: `sudo pacman -S sbcl`
89
89
 
90
90
  `~/.dsh/profiles/web/cordis.patch.yml` の `kiokuko-dsh` 行に次を追加し(他の `config` 値は保持)、
91
- プラグインを再読み込みすると、最初の実装・不具合修正の前に Lisp モードを使うか確認します。
92
- 選択はセッション内で保持します。`/kioku-lisp enable` でも有効にできます。
91
+ プラグインを再読み込みすると、実装タスクごとに Goal・実装項目・観測可能な条件を示してから Lisp モードを使うか確認します。
92
+ 選択はそのタスクと範囲に保存し、新しいタスクでは再確認します。`/kioku-lisp enable` は明示的な手動切替です。
93
93
  読み込まれた設定は `dsh --profile web --dump-config` で確認できます。
94
94
 
95
95
  ```yaml
@@ -101,9 +101,8 @@ DSH 更新後に Kiokuko を読み込めない場合は、[起動失敗時の復
101
101
  ```
102
102
 
103
103
  既定の開発モードでは Bubblewrap は不要です。Linux で明示的に保護互換モードを選ぶ場合に必要です。
104
- Lisp を選ぶと、Lisp 用ツールで通常実行します。役小角を使う場合は「Lispモードを使わない」を選んでください。
105
- 自由入力は相談・訂正として AI に渡します。
106
- 通常の編集・テストには追加確認を求めません。ソース・実データの削除と既存の永続DB変更は対象を確認します。Lisp と通常ツールを併用でき、Lisp の障害でも通常の開発は継続できます。[独自実行、レシート、記憶の再利用](docs/owned-execution.md)を参照してください。
104
+ 「使う」は Lisp、「使わない」は通常ツール、「取消・作業を保持」は準備内容を残して取消です。閉じる・未回答では実装を始めません。通常実行/役小角の選択は別に保持します。Lisp の起動失敗はブロッカーとして残し、復旧または明示的な経路変更後に再開します。
105
+ 選択後の通常の編集・テストには追加確認を求めません。ソース・実データの削除と既存の永続DB変更は対象を確認します。各項目の最新の証拠と、通常の利用入口からの最終確認が揃った場合だけ完了します。[Goal 駆動コーディング](docs/coding-workflow.md)と[独自実行、レシート、記憶の再利用](docs/owned-execution.md)を参照してください。
107
106
  [設定、API、停止・復旧方法](docs/lisp.md)を参照してください。
108
107
  永続 Lisp では、`kioku.code` からディスク上のコードの構造と読み取り専用の LSP 結果を取得できます。V1 service を提供する任意の provider が必要です。公開済みの `dsh-lsp-server` v0.1.12 は未対応なので、現時点では[ローカルの provider 修正](patches/code-intelligence/README.md)を使います。[API と上限](docs/lisp.md#read-only-code-intelligence)を確認してください。
109
108
 
package/README.md CHANGED
@@ -89,8 +89,9 @@ Install SBCL first:
89
89
  - Arch Linux: `sudo pacman -S sbcl`
90
90
 
91
91
  Add this to the `kiokuko-dsh` row in `~/.dsh/profiles/web/cordis.patch.yml`
92
- (keep other `config` values), then reload the plugin. The first implementation or
93
- debugging request asks whether to use Lisp; the session retains your choice.
92
+ (keep other `config` values), then reload the plugin. Each implementation task
93
+ shows its Goal, items and observable checks before asking whether to use Lisp.
94
+ The choice belongs to that task and scope; a new task asks again.
94
95
  You can also enable it with `/kioku-lisp enable`.
95
96
  Check the loaded configuration with `dsh --profile web --dump-config`.
96
97
 
@@ -103,9 +104,8 @@ Check the loaded configuration with `dsh --profile web --dump-config`.
103
104
  ```
104
105
 
105
106
  The default development mode does not require Bubblewrap. The explicit protected compatibility mode does on Linux.
106
- Choosing Lisp starts normal execution with the Lisp tools. Choose not to use Lisp
107
- if you want Enno. Free text is passed to the AI as a discussion or correction.
108
- Ordinary edits and tests run without confirmation. Source/data deletion and existing durable user database mutation require a concrete review. Lisp and ordinary tools coexist; worker failures leave ordinary development available. See [owned execution, receipts and memory reuse](docs/owned-execution.md).
107
+ Choose “使う” to use Lisp, “使わない” to use ordinary tools, or “取消・作業を保持” to cancel while preserving prepared work. Closing the question leaves implementation pending. Lisp choice and normal/Enno selection are separate. A failed Lisp startup remains a recoverable blocker until the selected route works or you explicitly change it.
108
+ Ordinary edits and tests run without further confirmation after that choice. Source/data deletion and existing durable user database mutation require a concrete review. Lisp and ordinary tools coexist. Completion requires current item evidence and a fresh final check through the user’s entry point. See [Goal-driven coding](docs/coding-workflow.md) and [owned execution, receipts and memory reuse](docs/owned-execution.md).
109
109
  See [setup, APIs, limits and recovery](docs/lisp.md).
110
110
  Persistent Lisp can optionally inspect parser-backed disk snapshots and read-only
111
111
  LSP results through `kioku.code`. The provider must advertise V1; published
package/dist/client.cjs CHANGED
@@ -1060,7 +1060,7 @@ window.__ModuleLoader__.load({
1060
1060
  setItems(data.items);
1061
1061
  setError("");
1062
1062
  for (const item of data.items)
1063
- if ((item.kind === "report" || notices) && !item.delivered && !seen.current.has(item.id)) {
1063
+ if ((item.kind === "report" || notices && !item.id.startsWith("completion-wait:")) && !item.delivered && !seen.current.has(item.id)) {
1064
1064
  seen.current.add(item.id);
1065
1065
  setOpen(true);
1066
1066
  }
@@ -1525,7 +1525,7 @@ window.__ModuleLoader__.load({
1525
1525
  ] }),
1526
1526
  jsx("p", { id: `${titleId}-keys`, children: pending.review ? "\u56DE\u7B54\u6E08\u307F\u306E\u5185\u5BB9\u3067\u3059\u3002Enter\u3067\u6B21\u306E\u8CEA\u554F\u3092\u8868\u793A\u3001Esc\u3067\u9589\u3058\u307E\u3059\u3002" : hint }),
1527
1527
  jsxs("div", { className: "kiokuko-intake-body", children: [
1528
- reviewing ? jsx(MarkdownText, { text: question.detail, labels: reviewCopy.labels }) : question.detail ? jsx("p", { children: question.detail }) : null,
1528
+ reviewing ? jsx(MarkdownText, { text: question.detail, labels: reviewCopy.labels }) : question.detail ? jsx("p", { children: question.detail, ...question.id.startsWith("coding-lisp-") ? { "data-coding-goal": true, style: { whiteSpace: "pre-wrap", overflowWrap: "anywhere" } } : {} }) : null,
1529
1529
  !pending.review && !snapshot.closed && snapshot.state === "continued" ? jsx("p", { children: "\u51E6\u7406\u306F\u7D99\u7D9A\u4E2D\u3067\u3059\u3002\u3053\u306E\u8CEA\u554F\u306B\u306F\u5F8C\u304B\u3089\u56DE\u7B54\u3067\u304D\u307E\u3059\u3002" }) : null,
1530
1530
  snapshot.countdown ? jsx("p", { children: `\u56DE\u7B54\u5F85\u3061: ${Math.ceil(snapshot.countdown.remainingMs / 1e3)}\u79D2${snapshot.countdown.running ? "" : "\uFF08\u64CD\u4F5C\u4E2D\u306F\u505C\u6B62\uFF09"}` }) : null,
1531
1531
  pending.review ? jsx("p", { children: `\u56DE\u7B54\u6E08\u307F: ${pending.review.find((a) => a.id === question.id)?.selected.join("\u3001") ?? ""} ${pending.review.find((a) => a.id === question.id)?.custom ?? ""}` }) : null,
@@ -25,8 +25,8 @@ declare const ownerSchema: z.ZodObject<{
25
25
  workspace: z.ZodString;
26
26
  sessionId: z.ZodString;
27
27
  mode: z.ZodEnum<{
28
- normal: "normal";
29
28
  enno: "enno";
29
+ normal: "normal";
30
30
  }>;
31
31
  workUnitId: z.ZodNullable<z.ZodString>;
32
32
  role: z.ZodNullable<z.ZodString>;
@@ -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":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAE3B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;AAChF,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;IAC/E,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;CAC9E,CAAC,CAAC,MAAM,EAAE,CAAA;AACX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACpE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CACnG,CAAC,CAAC,MAAM,EAAE,CAAA;AACX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;IACrD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI;IACzF,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC,MAAM,EAAE,CAAA;AACX,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACnG,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7E,MAAM,GAAG,GAAG,CAAC,MAAgB,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;QAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;IACjI,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACvD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC5B,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,CAAC,wBAAwB,CAAC,CAAA;QACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAAE,MAAM,CAAC,yCAAyC,CAAC,CAAA;IACtH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACvE,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACjF,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,wBAAwB,CAAC,CAAA;QACnH,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,wBAAwB,CAAC,CAAA;YACvD,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,oDAAoD,CAAC,CAAA;QACxG,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAE,MAAM,CAAC,wBAAwB,CAAC,CAAA;IACnF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,EAAE,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/D,MAAM,KAAK,GAAG,CAAC,EAAU,EAAQ,EAAE;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACpE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAM;QAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAChB,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE;YAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACzG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAA;IACD,KAAK,MAAM,EAAE,IAAI,KAAK;QAAE,KAAK,CAAC,EAAE,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAKF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACjG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI;CAC/E,CAAC,CAAC,MAAM,EAAE,CAAA;AAaX,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAA"}
@@ -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