yaaw-se 0.1.2 → 0.2.0
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.md +2 -1
- package/dist/cli/commands/install.d.ts +7 -0
- package/dist/cli/commands/install.js +50 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/status.d.ts +13 -0
- package/dist/cli/commands/status.js +2 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/main.js +8 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/installer/manifest.js +8 -3
- package/dist/installer/manifest.js.map +1 -1
- package/dist/installer/plan.js +129 -3
- package/dist/installer/plan.js.map +1 -1
- package/dist/installer/status.d.ts +13 -0
- package/dist/installer/status.js +65 -0
- package/dist/installer/status.js.map +1 -1
- package/dist/installer/toml-managed.d.ts +7 -0
- package/dist/installer/toml-managed.js +192 -0
- package/dist/installer/toml-managed.js.map +1 -0
- package/dist/installer/transaction.js +26 -0
- package/dist/installer/transaction.js.map +1 -1
- package/dist/installer/types.d.ts +27 -0
- package/dist/integrations/codex-runtime.d.ts +25 -0
- package/dist/integrations/codex-runtime.js +85 -0
- package/dist/integrations/codex-runtime.js.map +1 -0
- package/dist/integrations/codex.d.ts +2 -1
- package/dist/integrations/codex.js +125 -3
- package/dist/integrations/codex.js.map +1 -1
- package/dist/integrations/types.d.ts +4 -0
- package/dist/payload/bootstrap/codex.md +3 -1
- package/dist/payload/integrations/codex/yaaw-runtime.md +66 -0
- package/dist/payload/payload-files.json +29 -19
- package/dist/payload/payload.json +1 -1
- package/dist/payload/yaaw-core/system/core/context-loading.md +11 -0
- package/dist/payload/yaaw-core/system/core/dispatch-execution.md +37 -0
- package/dist/payload/yaaw-core/system/core/io-contract.md +6 -1
- package/dist/payload/yaaw-core/system/core/recovery.md +3 -0
- package/dist/payload/yaaw-core/system/registries/execution-policy.json +164 -33
- package/dist/payload/yaaw-core/system/roles/orchestrator.md +5 -2
- package/dist/payload/yaaw-core/system/rules/review-independence.md +2 -0
- package/dist/payload/yaaw-core/system/workflows/orchestration/dispatch.md +9 -4
- package/dist/payload/yaaw-core/system/workflows/orchestration/route.md +5 -3
- package/dist/tui/configure-codex.d.ts +2 -0
- package/dist/tui/configure-codex.js +82 -0
- package/dist/tui/configure-codex.js.map +1 -0
- package/dist/tui/result.js +9 -1
- package/dist/tui/result.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,38 +1,169 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "yaaw.execution-policy/v1",
|
|
3
|
-
"defaults": {
|
|
3
|
+
"defaults": {
|
|
4
|
+
"context_mode": "progressive",
|
|
5
|
+
"external_research": "forbidden"
|
|
6
|
+
},
|
|
4
7
|
"workflows": {
|
|
5
|
-
"prd.route": {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"prd.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
8
|
+
"prd.route": {
|
|
9
|
+
"repository_requirement": "NONE",
|
|
10
|
+
"external_research": "forbidden",
|
|
11
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
12
|
+
},
|
|
13
|
+
"prd.create": {
|
|
14
|
+
"repository_requirement": "NONE",
|
|
15
|
+
"external_research": "forbidden",
|
|
16
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
17
|
+
},
|
|
18
|
+
"prd.question-round": {
|
|
19
|
+
"repository_requirement": "NONE",
|
|
20
|
+
"external_research": "forbidden",
|
|
21
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
22
|
+
},
|
|
23
|
+
"prd.record-decisions": {
|
|
24
|
+
"repository_requirement": "NONE",
|
|
25
|
+
"external_research": "forbidden",
|
|
26
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
27
|
+
},
|
|
28
|
+
"prd.revise": {
|
|
29
|
+
"repository_requirement": "NONE",
|
|
30
|
+
"external_research": "forbidden",
|
|
31
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
32
|
+
},
|
|
33
|
+
"prd.refine": {
|
|
34
|
+
"repository_requirement": "NONE",
|
|
35
|
+
"external_research": "forbidden",
|
|
36
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
37
|
+
},
|
|
38
|
+
"prd.readiness": {
|
|
39
|
+
"repository_requirement": "NONE",
|
|
40
|
+
"external_research": "forbidden",
|
|
41
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
42
|
+
},
|
|
43
|
+
"planning.route": {
|
|
44
|
+
"repository_requirement": "INSPECT",
|
|
45
|
+
"external_research": "metadata-only",
|
|
46
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
47
|
+
},
|
|
48
|
+
"planning.discover": {
|
|
49
|
+
"repository_requirement": "INSPECT",
|
|
50
|
+
"external_research": "forbidden",
|
|
51
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
52
|
+
},
|
|
53
|
+
"planning.write-understanding": {
|
|
54
|
+
"repository_requirement": "INSPECT",
|
|
55
|
+
"external_research": "forbidden",
|
|
56
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
57
|
+
},
|
|
58
|
+
"planning.decision-frontier": {
|
|
59
|
+
"repository_requirement": "INSPECT",
|
|
60
|
+
"external_research": "admission-only",
|
|
61
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
62
|
+
},
|
|
63
|
+
"planning.research": {
|
|
64
|
+
"repository_requirement": "INSPECT",
|
|
65
|
+
"external_research": "candidate-scoped",
|
|
66
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
67
|
+
},
|
|
68
|
+
"planning.question-round": {
|
|
69
|
+
"repository_requirement": "INSPECT",
|
|
70
|
+
"external_research": "forbidden",
|
|
71
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
72
|
+
},
|
|
73
|
+
"planning.record-decisions": {
|
|
74
|
+
"repository_requirement": "INSPECT",
|
|
75
|
+
"external_research": "forbidden",
|
|
76
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
77
|
+
},
|
|
78
|
+
"planning.readiness-review": {
|
|
79
|
+
"repository_requirement": "INSPECT",
|
|
80
|
+
"external_research": "forbidden",
|
|
81
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
82
|
+
},
|
|
83
|
+
"planning.create-spec": {
|
|
84
|
+
"repository_requirement": "INSPECT",
|
|
85
|
+
"external_research": "forbidden",
|
|
86
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
87
|
+
},
|
|
88
|
+
"planning.create-tickets": {
|
|
89
|
+
"repository_requirement": "IDENTITY",
|
|
90
|
+
"external_research": "forbidden",
|
|
91
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
92
|
+
},
|
|
93
|
+
"planning.replan": {
|
|
94
|
+
"repository_requirement": "INSPECT",
|
|
95
|
+
"external_research": "admission-only",
|
|
96
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
97
|
+
},
|
|
98
|
+
"implementation.select-ticket": {
|
|
99
|
+
"repository_requirement": "IDENTITY",
|
|
100
|
+
"external_research": "forbidden",
|
|
101
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
102
|
+
},
|
|
103
|
+
"implementation.implement-ticket": {
|
|
104
|
+
"repository_requirement": "IDENTITY",
|
|
105
|
+
"external_research": "forbidden",
|
|
106
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
107
|
+
},
|
|
108
|
+
"implementation.verify-ticket": {
|
|
109
|
+
"repository_requirement": "IDENTITY",
|
|
110
|
+
"external_research": "forbidden",
|
|
111
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
112
|
+
},
|
|
113
|
+
"implementation.repair-ticket": {
|
|
114
|
+
"repository_requirement": "IDENTITY",
|
|
115
|
+
"external_research": "forbidden",
|
|
116
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
117
|
+
},
|
|
118
|
+
"review.inspect-change": {
|
|
119
|
+
"repository_requirement": "IDENTITY",
|
|
120
|
+
"external_research": "restricted",
|
|
121
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
122
|
+
},
|
|
123
|
+
"review.review-ticket": {
|
|
124
|
+
"repository_requirement": "IDENTITY",
|
|
125
|
+
"external_research": "restricted",
|
|
126
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
127
|
+
},
|
|
128
|
+
"review.classify-findings": {
|
|
129
|
+
"repository_requirement": "IDENTITY",
|
|
130
|
+
"external_research": "forbidden",
|
|
131
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
132
|
+
},
|
|
133
|
+
"review.record-review": {
|
|
134
|
+
"repository_requirement": "IDENTITY",
|
|
135
|
+
"external_research": "forbidden",
|
|
136
|
+
"execution_context": "ISOLATED_PREFERRED"
|
|
137
|
+
},
|
|
138
|
+
"orchestration.route": {
|
|
139
|
+
"repository_requirement": "INSPECT",
|
|
140
|
+
"external_research": "forbidden",
|
|
141
|
+
"execution_context": "ROOT_ONLY"
|
|
142
|
+
},
|
|
143
|
+
"orchestration.inspect-state": {
|
|
144
|
+
"repository_requirement": "INSPECT",
|
|
145
|
+
"external_research": "forbidden",
|
|
146
|
+
"execution_context": "ROOT_ONLY"
|
|
147
|
+
},
|
|
148
|
+
"orchestration.reconcile-state": {
|
|
149
|
+
"repository_requirement": "INSPECT",
|
|
150
|
+
"external_research": "forbidden",
|
|
151
|
+
"execution_context": "ROOT_ONLY"
|
|
152
|
+
},
|
|
153
|
+
"orchestration.determine-next-action": {
|
|
154
|
+
"repository_requirement": "INSPECT",
|
|
155
|
+
"external_research": "forbidden",
|
|
156
|
+
"execution_context": "ROOT_ONLY"
|
|
157
|
+
},
|
|
158
|
+
"orchestration.dispatch": {
|
|
159
|
+
"repository_requirement": "INSPECT",
|
|
160
|
+
"external_research": "forbidden",
|
|
161
|
+
"execution_context": "ROOT_ONLY"
|
|
162
|
+
},
|
|
163
|
+
"orchestration.recover-interruption": {
|
|
164
|
+
"repository_requirement": "IDENTITY",
|
|
165
|
+
"external_research": "forbidden",
|
|
166
|
+
"execution_context": "ROOT_ONLY"
|
|
167
|
+
}
|
|
37
168
|
}
|
|
38
169
|
}
|
|
@@ -11,8 +11,11 @@ Own continuity, workspace/repository reconstruction, evidence-backed reconciliat
|
|
|
11
11
|
5. Reconcile only evidence-backed inconsistencies using legal transitions.
|
|
12
12
|
6. Determine exactly one next canonical workflow or terminal state.
|
|
13
13
|
7. Populate a structured handoff from `role-io.json`, `execution-policy.json`, exact artifact references, and current repository basis.
|
|
14
|
-
8. Dispatch
|
|
15
|
-
9. After
|
|
14
|
+
8. Dispatch exactly one canonical workflow using the host execution mechanism defined by `.yaaw-core/system/core/dispatch-execution.md`. Prefer a fresh isolated worker for non-Orchestrator semantic roles when available.
|
|
15
|
+
9. After any worker completion, failure, interruption, or lost response, return to `orchestration.inspect-state` before selecting another semantic workflow.
|
|
16
|
+
10. Repeat until a real stop condition.
|
|
16
17
|
|
|
17
18
|
## Boundary
|
|
18
19
|
The Orchestrator is a traffic controller, not a super-agent. It must not author product decisions, architecture, implementation, research conclusions, or acceptance. Roles never privately delegate to peers; every successor is chosen here.
|
|
20
|
+
|
|
21
|
+
Child/worker text is not project truth. Durable artifacts, repository evidence, accepted reviews, and legal state transitions are authoritative.
|
|
@@ -7,3 +7,5 @@ Reviewer evaluates actual repository work against the current ticket/spec/produc
|
|
|
7
7
|
- Only Reviewer may transition `REVIEW_REQUIRED -> PASS`.
|
|
8
8
|
- A later source revision or repository drift can make prior PASS evidence stale without deleting the historical review.
|
|
9
9
|
- Reviewer may classify `REPLAN`, but Planner owns the resulting contract change.
|
|
10
|
+
- Under orchestrated operation, Reviewer must execute in a different fresh authority context from the Implementer whose work is being accepted. Never role-switch an Implementer worker into Reviewer.
|
|
11
|
+
- Independence is semantic, not a host depth/concurrency setting; it remains required even when a host falls back to inline execution.
|
|
@@ -10,9 +10,14 @@ Execute exactly one already-selected canonical workflow. This file is not the or
|
|
|
10
10
|
1. Validate handoff schema, workflow registry entry, execution policy, role I/O, source artifact revisions, transition-sequence basis, and repository basis.
|
|
11
11
|
2. Enforce repository requirement: `NONE` needs no Git prerequisite; `INSPECT` may proceed with a represented `UNVERSIONED` workspace; `IDENTITY` requires repository status `READY`.
|
|
12
12
|
3. If any basis is stale or unsatisfied, discard the handoff and return a typed stale/prerequisite result to `orchestration.route`; do not execute it.
|
|
13
|
-
4.
|
|
14
|
-
5.
|
|
15
|
-
6.
|
|
16
|
-
7.
|
|
13
|
+
4. Resolve the handoff's execution-context policy from `execution-policy.json` and `.yaaw-core/system/core/dispatch-execution.md`.
|
|
14
|
+
5. If the target is an Orchestrator workflow or policy is `ROOT_ONLY`, execute in the current root context.
|
|
15
|
+
6. Otherwise request the active host adapter's isolated-worker mechanism. When isolation is available, execute this one handoff in a fresh worker with minimal bootstrap context and without relying on inherited parent conversation.
|
|
16
|
+
7. If isolation is unavailable or a named worker cannot be selected before child creation, follow the configured host fallback policy. If a child was already created and then failed, do **not** blindly retry; return to reality inspection first.
|
|
17
|
+
8. The executing context loads only the target role contract, selected workflow contract, exact handoff reads, selected expertise, and minimal relevant repository context.
|
|
18
|
+
9. Execute the target workflow once. A worker may not route or spawn another YAAW authority role.
|
|
19
|
+
10. Require the expected durable output/state/evidence or an explicit legal typed stop/prerequisite result.
|
|
20
|
+
11. Treat any child response only as an execution signal; do not accept it as project truth without re-inspection.
|
|
21
|
+
12. Mark/remove the consumed runtime handoff and return control to `orchestration.route`.
|
|
17
22
|
|
|
18
23
|
Never recursively dispatch `orchestration.dispatch` as its own target. A target role never dispatches a peer.
|
|
@@ -13,11 +13,13 @@ Repeat:
|
|
|
13
13
|
3. execute `orchestration.determine-next-action`;
|
|
14
14
|
4. if terminal/blocked/human-input stop condition is returned, stop;
|
|
15
15
|
5. execute `orchestration.dispatch` for the one persisted handoff;
|
|
16
|
-
6. require the dispatched
|
|
17
|
-
7. discard the consumed handoff and return to step 1 before loading another target workflow.
|
|
16
|
+
6. require the dispatched execution to persist its artifact/state/evidence output or legal typed prerequisite/stop result;
|
|
17
|
+
7. whether dispatch reports success, failure, interruption, or no response, discard/validate the consumed handoff as appropriate and return to step 1 before loading another target workflow.
|
|
18
|
+
|
|
19
|
+
There is no direct `worker A result -> worker B` authority chain. Reality reconstruction always sits between authority-role dispatches.
|
|
18
20
|
|
|
19
21
|
## Loop safety
|
|
20
22
|
If the same repository capability/identity, state, handoff, and expected output repeat without any durable mutation/evidence change, stop as `BLOCKED` with `no_progress` rather than spinning.
|
|
21
23
|
|
|
22
24
|
## Stop conditions
|
|
23
|
-
Human product/engineering answer required; evidence/permission unavailable; target workflow requires repository `IDENTITY` but status is not `READY`; host requires approval for consequential action; or accepted scope is terminal `COMPLETE`.
|
|
25
|
+
Human product/engineering answer required; evidence/permission unavailable; target workflow requires repository `IDENTITY` but status is not `READY`; active host/runtime policy blocks required isolation; host requires approval for consequential action; or accepted scope is terminal `COMPLETE`.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as p from "@clack/prompts";
|
|
2
|
+
import { defaultCodexRuntimeSettings, normalizeCodexRuntimeSettings } from "../integrations/codex-runtime.js";
|
|
3
|
+
async function optionalText(message, current) {
|
|
4
|
+
const result = await p.text({
|
|
5
|
+
message,
|
|
6
|
+
placeholder: current ?? "inherit",
|
|
7
|
+
defaultValue: current ?? ""
|
|
8
|
+
});
|
|
9
|
+
if (p.isCancel(result))
|
|
10
|
+
return current;
|
|
11
|
+
const value = String(result).trim();
|
|
12
|
+
return value ? value : null;
|
|
13
|
+
}
|
|
14
|
+
async function modelPair(label, current) {
|
|
15
|
+
p.note("Leave blank to inherit the active Codex/project/user setting.", label);
|
|
16
|
+
return {
|
|
17
|
+
model: await optionalText(`${label} model ID`, current.model),
|
|
18
|
+
reasoning: await optionalText(`${label} reasoning effort`, current.reasoning)
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export async function configureCodexRuntime(current) {
|
|
22
|
+
const base = normalizeCodexRuntimeSettings(current ?? defaultCodexRuntimeSettings());
|
|
23
|
+
const setup = await p.select({
|
|
24
|
+
message: "Configure Codex runtime for YAAW-SE?",
|
|
25
|
+
initialValue: "recommended",
|
|
26
|
+
options: [
|
|
27
|
+
{ value: "recommended", label: "Yes — isolated workers with configurable overrides" },
|
|
28
|
+
{ value: "minimal", label: "Minimal — auto runtime, inherit all Codex settings" },
|
|
29
|
+
{ value: "inline", label: "Legacy inline execution" }
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
if (p.isCancel(setup) || setup === "minimal")
|
|
33
|
+
return defaultCodexRuntimeSettings();
|
|
34
|
+
if (setup === "inline")
|
|
35
|
+
return { ...defaultCodexRuntimeSettings(), mode: "inline" };
|
|
36
|
+
const mode = await p.select({
|
|
37
|
+
message: "YAAW Codex execution mode",
|
|
38
|
+
initialValue: base.mode,
|
|
39
|
+
options: [
|
|
40
|
+
{ value: "auto", label: "Auto — named worker → generic worker → inline" },
|
|
41
|
+
{ value: "isolated-required", label: "Require isolated workers — block when unavailable" },
|
|
42
|
+
{ value: "inline", label: "Inline only — do not spawn YAAW authority workers" }
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
if (p.isCancel(mode))
|
|
46
|
+
return base;
|
|
47
|
+
const customize = await p.confirm({ message: "Customize models/reasoning or advanced Codex settings?", initialValue: false });
|
|
48
|
+
if (p.isCancel(customize) || !customize)
|
|
49
|
+
return { ...base, mode: mode };
|
|
50
|
+
const orchestrator = await modelPair("Orchestrator", base.orchestrator);
|
|
51
|
+
const defaultWorker = await modelPair("Default fallback worker", base.defaultWorker);
|
|
52
|
+
const perRole = await p.confirm({ message: "Customize individual YAAW worker roles?", initialValue: false });
|
|
53
|
+
const roles = { ...base.roles };
|
|
54
|
+
if (!p.isCancel(perRole) && perRole) {
|
|
55
|
+
roles.prd = await modelPair("PRD", base.roles.prd);
|
|
56
|
+
roles.planner = await modelPair("Planner", base.roles.planner);
|
|
57
|
+
roles.implementer = await modelPair("Implementer", base.roles.implementer);
|
|
58
|
+
roles.reviewer = await modelPair("Reviewer", base.roles.reviewer);
|
|
59
|
+
}
|
|
60
|
+
const maxRaw = await optionalText("Concurrent Codex agent threads (blank = inherit)", base.maxConcurrentThreads === null ? null : String(base.maxConcurrentThreads));
|
|
61
|
+
const web = await p.select({
|
|
62
|
+
message: "Codex web search",
|
|
63
|
+
initialValue: base.webSearch ?? "inherit",
|
|
64
|
+
options: [
|
|
65
|
+
{ value: "inherit", label: "Inherit" },
|
|
66
|
+
{ value: "disabled", label: "Disabled" },
|
|
67
|
+
{ value: "cached", label: "Cached" },
|
|
68
|
+
{ value: "indexed", label: "Indexed" },
|
|
69
|
+
{ value: "live", label: "Live" }
|
|
70
|
+
]
|
|
71
|
+
});
|
|
72
|
+
return normalizeCodexRuntimeSettings({
|
|
73
|
+
...base,
|
|
74
|
+
mode,
|
|
75
|
+
orchestrator,
|
|
76
|
+
defaultWorker,
|
|
77
|
+
roles,
|
|
78
|
+
maxConcurrentThreads: maxRaw,
|
|
79
|
+
webSearch: p.isCancel(web) || web === "inherit" ? null : web
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=configure-codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-codex.js","sourceRoot":"","sources":["../../src/tui/configure-codex.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/result.js
CHANGED
|
@@ -46,6 +46,13 @@ export function formatSuccess(summary) {
|
|
|
46
46
|
if (!changeLines.length)
|
|
47
47
|
changeLines.push(" No file content changes were required");
|
|
48
48
|
const entryPoints = summary.selected.map(id => ` ${integrations[id].displayName}: ${integrations[id].invocationHint("yaaw-orchestrator")}`);
|
|
49
|
+
const codexRuntimeChanged = summary.selected.includes("codex") && changed.some(path => path.startsWith(".codex/"));
|
|
50
|
+
const codexNote = codexRuntimeChanged ? [
|
|
51
|
+
"",
|
|
52
|
+
"Codex runtime configuration changed:",
|
|
53
|
+
" Start a new Codex session/task for project .codex settings to load.",
|
|
54
|
+
" Codex loads project .codex configuration only for trusted projects."
|
|
55
|
+
] : [];
|
|
49
56
|
return [
|
|
50
57
|
`Version: ${summary.version}`,
|
|
51
58
|
`Project: ${summary.projectRoot}`,
|
|
@@ -61,7 +68,8 @@ export function formatSuccess(summary) {
|
|
|
61
68
|
" User-owned content outside YAAW-managed sections was left intact",
|
|
62
69
|
"",
|
|
63
70
|
"Start here:",
|
|
64
|
-
...entryPoints
|
|
71
|
+
...entryPoints,
|
|
72
|
+
...codexNote
|
|
65
73
|
].join("\n");
|
|
66
74
|
}
|
|
67
75
|
export function showSuccess(summary) {
|
package/dist/tui/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/tui/result.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/tui/result.ts"],"names":[],"mappings":"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"}
|