@telora/daemon 0.18.49 → 0.18.58
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/build-info.json +13 -3
- package/dist/ai-inspection-context.d.ts.map +1 -1
- package/dist/ai-inspection-context.js +11 -1
- package/dist/ai-inspection-context.js.map +1 -1
- package/dist/ai-inspection-runner.d.ts.map +1 -1
- package/dist/ai-inspection-runner.js +0 -1
- package/dist/ai-inspection-runner.js.map +1 -1
- package/dist/audit-phase.d.ts.map +1 -1
- package/dist/audit-phase.js +4 -0
- package/dist/audit-phase.js.map +1 -1
- package/dist/cascade-restatement.d.ts +14 -5
- package/dist/cascade-restatement.d.ts.map +1 -1
- package/dist/cascade-restatement.js +35 -6
- package/dist/cascade-restatement.js.map +1 -1
- package/dist/completion/team-completion.d.ts.map +1 -1
- package/dist/completion/team-completion.js +32 -2
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/de-restatement.d.ts.map +1 -1
- package/dist/de-restatement.js +0 -1
- package/dist/de-restatement.js.map +1 -1
- package/dist/directive/close-loop-stage.d.ts.map +1 -1
- package/dist/directive/close-loop-stage.js +10 -2
- package/dist/directive/close-loop-stage.js.map +1 -1
- package/dist/focus-executor.d.ts +7 -2
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +20 -9
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus-lifecycle.js +20 -0
- package/dist/focus-lifecycle.js.map +1 -1
- package/dist/git-genesis.d.ts +100 -0
- package/dist/git-genesis.d.ts.map +1 -0
- package/dist/git-genesis.js +231 -0
- package/dist/git-genesis.js.map +1 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +28 -5
- package/dist/git.js.map +1 -1
- package/dist/negative-branch.d.ts +32 -1
- package/dist/negative-branch.d.ts.map +1 -1
- package/dist/negative-branch.js +55 -9
- package/dist/negative-branch.js.map +1 -1
- package/dist/output-monitor.js +5 -8
- package/dist/output-monitor.js.map +1 -1
- package/dist/prd-controller.d.ts +0 -2
- package/dist/prd-controller.d.ts.map +1 -1
- package/dist/prd-controller.js +14 -35
- package/dist/prd-controller.js.map +1 -1
- package/dist/prd-divergence.d.ts +19 -8
- package/dist/prd-divergence.d.ts.map +1 -1
- package/dist/prd-divergence.js +7 -26
- package/dist/prd-divergence.js.map +1 -1
- package/dist/prd-viability.d.ts +14 -15
- package/dist/prd-viability.d.ts.map +1 -1
- package/dist/prd-viability.js +21 -34
- package/dist/prd-viability.js.map +1 -1
- package/dist/queries/prd.d.ts +24 -2
- package/dist/queries/prd.d.ts.map +1 -1
- package/dist/queries/prd.js +17 -0
- package/dist/queries/prd.js.map +1 -1
- package/dist/queries/schemas.d.ts +28 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +26 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/sessions.d.ts +14 -0
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +19 -0
- package/dist/queries/sessions.js.map +1 -1
- package/dist/queries/starter-repo.d.ts +27 -0
- package/dist/queries/starter-repo.d.ts.map +1 -0
- package/dist/queries/starter-repo.js +32 -0
- package/dist/queries/starter-repo.js.map +1 -0
- package/dist/queries/verification.d.ts +132 -0
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +271 -0
- package/dist/queries/verification.js.map +1 -1
- package/dist/reality-writeback.d.ts +257 -0
- package/dist/reality-writeback.d.ts.map +1 -0
- package/dist/reality-writeback.js +179 -0
- package/dist/reality-writeback.js.map +1 -0
- package/dist/resolvers/shared/reality-tree.d.ts +39 -1
- package/dist/resolvers/shared/reality-tree.d.ts.map +1 -1
- package/dist/resolvers/shared/reality-tree.js +51 -1
- package/dist/resolvers/shared/reality-tree.js.map +1 -1
- package/dist/session-lineage.d.ts +25 -0
- package/dist/session-lineage.d.ts.map +1 -1
- package/dist/session-lineage.js +23 -0
- package/dist/session-lineage.js.map +1 -1
- package/dist/session-stamp.d.ts +63 -0
- package/dist/session-stamp.d.ts.map +1 -0
- package/dist/session-stamp.js +65 -0
- package/dist/session-stamp.js.map +1 -0
- package/dist/spawner/helpers.d.ts.map +1 -1
- package/dist/spawner/helpers.js +5 -8
- package/dist/spawner/helpers.js.map +1 -1
- package/dist/supabase.d.ts +2 -2
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +1 -1
- package/dist/supabase.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +6 -3
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/types/session.d.ts +24 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/verification-engine.d.ts +10 -0
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +32 -1
- package/dist/verification-engine.js.map +1 -1
- package/dist/verify-restatement.d.ts +16 -0
- package/dist/verify-restatement.d.ts.map +1 -1
- package/dist/verify-restatement.js +7 -0
- package/dist/verify-restatement.js.map +1 -1
- package/package.json +2 -2
- package/dist/prd-clearance-engine.d.ts +0 -121
- package/dist/prd-clearance-engine.d.ts.map +0 -1
- package/dist/prd-clearance-engine.js +0 -164
- package/dist/prd-clearance-engine.js.map +0 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Starter-repo genesis: seed an EMPTY product repo from a registered, polished
|
|
3
|
+
* starter the active PRD selected, instead of scaffolding a frontend from zero
|
|
4
|
+
* (focus 80ecc233).
|
|
5
|
+
*
|
|
6
|
+
* When a product's git repo has no commits AND its active PRD carries a
|
|
7
|
+
* `starterRepoId`, the daemon clones the starter's pinned ref, squashes its
|
|
8
|
+
* working tree into a fresh INITIAL commit (starter history is NOT inherited),
|
|
9
|
+
* and records provenance (git URL + resolved sha) both as a `.telora`
|
|
10
|
+
* metadata file and in the genesis commit trailers. The PRD then runs normally
|
|
11
|
+
* against that base -- the agent starts ABOVE the UX floor.
|
|
12
|
+
*
|
|
13
|
+
* It is a strict NO-OP (returns seeded:false with a reason) when the repo
|
|
14
|
+
* already has history (greenfield guard), no active PRD selects a starter, or
|
|
15
|
+
* the selected starter cannot be resolved/cloned -- in every such case the
|
|
16
|
+
* caller falls back to the empty-initial-commit path.
|
|
17
|
+
*
|
|
18
|
+
* Private starters clone via the daemon process's inherited git credentials
|
|
19
|
+
* (ssh-agent / credential helper) -- no special handling here; `git clone`
|
|
20
|
+
* runs in the daemon's environment.
|
|
21
|
+
*
|
|
22
|
+
* All filesystem + git effects are injectable (GenesisDeps) so the path is
|
|
23
|
+
* unit-tested against a local fixture starter repo without a live backend.
|
|
24
|
+
*/
|
|
25
|
+
import { mkdtempSync, rmSync, cpSync, writeFileSync, mkdirSync, existsSync, } from 'node:fs';
|
|
26
|
+
import { tmpdir } from 'node:os';
|
|
27
|
+
import { join, sep } from 'node:path';
|
|
28
|
+
import { runGitSync } from './git-types.js';
|
|
29
|
+
import { repoHasCommits } from './git-branch.js';
|
|
30
|
+
import { loadActivePrds, hasPendingStarterSelection } from './queries/prd.js';
|
|
31
|
+
import { loadStarterRepo, } from './queries/starter-repo.js';
|
|
32
|
+
const defaultDeps = {
|
|
33
|
+
hasCommits: repoHasCommits,
|
|
34
|
+
loadActivePrds,
|
|
35
|
+
loadStarterRepo,
|
|
36
|
+
hasPendingStarterSelection,
|
|
37
|
+
runGit: runGitSync,
|
|
38
|
+
log: (msg) => console.log(msg),
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* The placeholder initial-commit message written when an empty repo has no
|
|
42
|
+
* starter to seed from. Shared so callers can recognise the placeholder.
|
|
43
|
+
*/
|
|
44
|
+
export const PLACEHOLDER_COMMIT_MESSAGE = 'chore: initialize repository for Telora';
|
|
45
|
+
// Cloning a polished app (full clone so an arbitrary sha is reachable) can take
|
|
46
|
+
// a while; give it a generous ceiling distinct from the 60s default.
|
|
47
|
+
const CLONE_TIMEOUT_MS = 300_000;
|
|
48
|
+
/**
|
|
49
|
+
* Seed an empty product repo's genesis commit from the starter its active PRD
|
|
50
|
+
* selected. Returns a typed result; the caller decides the fallback.
|
|
51
|
+
*/
|
|
52
|
+
export async function seedGenesisFromStarter(config, deps = {}) {
|
|
53
|
+
const d = { ...defaultDeps, ...deps };
|
|
54
|
+
// Greenfield guard: only an empty repo is seeded. A repo with history is left
|
|
55
|
+
// untouched -- a starter is the INITIAL commit, never grafted onto a history.
|
|
56
|
+
if (d.hasCommits(config.repoPath)) {
|
|
57
|
+
return { seeded: false, reason: 'repo-has-history' };
|
|
58
|
+
}
|
|
59
|
+
// Resolve the starter the active PRD selected (first active PRD that carries
|
|
60
|
+
// a selection wins).
|
|
61
|
+
let starterRepoId = null;
|
|
62
|
+
try {
|
|
63
|
+
const prds = await d.loadActivePrds(config.productId);
|
|
64
|
+
starterRepoId = prds.find((p) => p.starterRepoId)?.starterRepoId ?? null;
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
d.log(`[genesis] could not load active PRDs for product ${config.productId}: ${err.message} -- skipping starter genesis`);
|
|
68
|
+
return { seeded: false, reason: 'no-starter-selected' };
|
|
69
|
+
}
|
|
70
|
+
if (!starterRepoId) {
|
|
71
|
+
d.log('[genesis] no active PRD selects a starter -- using empty genesis');
|
|
72
|
+
return { seeded: false, reason: 'no-starter-selected' };
|
|
73
|
+
}
|
|
74
|
+
// Resolve the starter's clone coordinates.
|
|
75
|
+
let coords = null;
|
|
76
|
+
try {
|
|
77
|
+
coords = await d.loadStarterRepo(starterRepoId);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
d.log(`[genesis] could not load starter ${starterRepoId}: ${err.message}`);
|
|
81
|
+
}
|
|
82
|
+
if (!coords) {
|
|
83
|
+
d.log(`[genesis] starter ${starterRepoId} not found/unclonable -- using empty genesis`);
|
|
84
|
+
return { seeded: false, reason: 'starter-not-found', starterRepoId };
|
|
85
|
+
}
|
|
86
|
+
const tmpRoot = mkdtempSync(join(tmpdir(), 'telora-starter-'));
|
|
87
|
+
const cloneDir = join(tmpRoot, 'starter');
|
|
88
|
+
try {
|
|
89
|
+
// Full clone (so a pinned sha is reachable), then check out the exact ref.
|
|
90
|
+
const clone = d.runGit(['clone', coords.gitUrl, cloneDir], tmpRoot, {
|
|
91
|
+
timeoutMs: CLONE_TIMEOUT_MS,
|
|
92
|
+
});
|
|
93
|
+
if (!clone.success) {
|
|
94
|
+
d.log(`[genesis] clone of ${coords.gitUrl} failed: ${clone.error} -- using empty genesis`);
|
|
95
|
+
return { seeded: false, reason: 'clone-failed', starterRepoId, gitUrl: coords.gitUrl, ref: coords.ref };
|
|
96
|
+
}
|
|
97
|
+
const checkout = d.runGit(['checkout', coords.ref], cloneDir, { timeoutMs: CLONE_TIMEOUT_MS });
|
|
98
|
+
if (!checkout.success) {
|
|
99
|
+
d.log(`[genesis] checkout of ref ${coords.ref} failed: ${checkout.error} -- using empty genesis`);
|
|
100
|
+
return { seeded: false, reason: 'clone-failed', starterRepoId, gitUrl: coords.gitUrl, ref: coords.ref };
|
|
101
|
+
}
|
|
102
|
+
const resolved = d.runGit(['rev-parse', 'HEAD'], cloneDir);
|
|
103
|
+
const resolvedSha = resolved.success ? resolved.output.trim() : coords.ref;
|
|
104
|
+
// Copy the starter working tree (MINUS its .git) over the empty product
|
|
105
|
+
// repo. Excluding .git is what squashes the result to a single fresh
|
|
106
|
+
// initial commit -- starter history is not inherited.
|
|
107
|
+
const starterGitDir = join(cloneDir, '.git');
|
|
108
|
+
cpSync(cloneDir, config.repoPath, {
|
|
109
|
+
recursive: true,
|
|
110
|
+
filter: (src) => src !== starterGitDir && !src.startsWith(starterGitDir + sep),
|
|
111
|
+
});
|
|
112
|
+
// Record provenance as repo metadata (force-added past any .telora gitignore)
|
|
113
|
+
// so a product traces back to exactly what it started from.
|
|
114
|
+
const provenance = {
|
|
115
|
+
starterRepoId,
|
|
116
|
+
name: coords.name,
|
|
117
|
+
gitUrl: coords.gitUrl,
|
|
118
|
+
ref: coords.ref,
|
|
119
|
+
resolvedSha,
|
|
120
|
+
seededAt: new Date().toISOString(),
|
|
121
|
+
};
|
|
122
|
+
const teloraDir = join(config.repoPath, '.telora');
|
|
123
|
+
if (!existsSync(teloraDir))
|
|
124
|
+
mkdirSync(teloraDir, { recursive: true });
|
|
125
|
+
writeFileSync(join(teloraDir, 'starter-provenance.json'), `${JSON.stringify(provenance, null, 2)}\n`);
|
|
126
|
+
d.runGit(['add', '-A'], config.repoPath);
|
|
127
|
+
// Force-add the provenance file in case the product's .gitignore drops
|
|
128
|
+
// .telora -- the provenance must land in the genesis commit.
|
|
129
|
+
d.runGit(['add', '-f', '.telora/starter-provenance.json'], config.repoPath);
|
|
130
|
+
const message = `chore: initialize from starter ${coords.name || coords.ref}\n\n` +
|
|
131
|
+
'Seeded the product genesis commit from a registered starter repo ' +
|
|
132
|
+
'(squashed -- starter history not inherited).\n\n' +
|
|
133
|
+
`Starter-Repo-Id: ${starterRepoId}\n` +
|
|
134
|
+
`Starter-Name: ${coords.name}\n` +
|
|
135
|
+
`Starter-Git-Url: ${coords.gitUrl}\n` +
|
|
136
|
+
`Starter-Ref: ${coords.ref}\n` +
|
|
137
|
+
`Starter-Resolved-Sha: ${resolvedSha}\n`;
|
|
138
|
+
let commit = d.runGit(['commit', '-m', message], config.repoPath);
|
|
139
|
+
if (!commit.success) {
|
|
140
|
+
// The daemon host may have no committer identity configured. Retry with an
|
|
141
|
+
// explicit one scoped to this command only.
|
|
142
|
+
commit = d.runGit([
|
|
143
|
+
'-c',
|
|
144
|
+
'user.name=Telora Factory',
|
|
145
|
+
'-c',
|
|
146
|
+
'user.email=factory@telora.local',
|
|
147
|
+
'commit',
|
|
148
|
+
'-m',
|
|
149
|
+
message,
|
|
150
|
+
], config.repoPath);
|
|
151
|
+
}
|
|
152
|
+
if (!commit.success) {
|
|
153
|
+
d.log(`[genesis] genesis commit failed: ${commit.error} -- using empty genesis`);
|
|
154
|
+
return {
|
|
155
|
+
seeded: false,
|
|
156
|
+
reason: 'commit-failed',
|
|
157
|
+
starterRepoId,
|
|
158
|
+
gitUrl: coords.gitUrl,
|
|
159
|
+
ref: coords.ref,
|
|
160
|
+
resolvedSha,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
d.log(`[genesis] seeded product genesis from starter "${coords.name}" ` +
|
|
164
|
+
`(${coords.gitUrl} @ ${coords.ref} -> ${resolvedSha.slice(0, 12)})`);
|
|
165
|
+
return {
|
|
166
|
+
seeded: true,
|
|
167
|
+
reason: 'seeded',
|
|
168
|
+
starterRepoId,
|
|
169
|
+
gitUrl: coords.gitUrl,
|
|
170
|
+
ref: coords.ref,
|
|
171
|
+
resolvedSha,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
finally {
|
|
175
|
+
rmSync(tmpRoot, { recursive: true, force: true });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Ensure an empty product repo has its initial commit, preferring a starter
|
|
180
|
+
* genesis. This is the single decision point both daemon startup (initGit) and
|
|
181
|
+
* the per-poll worktree-provisioning safety net share, so the
|
|
182
|
+
* defer-rather-than-foreclose rule is applied consistently (focus 80ecc233).
|
|
183
|
+
*
|
|
184
|
+
* Order:
|
|
185
|
+
* 1. Repo already has commits -> nothing to do.
|
|
186
|
+
* 2. Try to seed from the active PRD's starter.
|
|
187
|
+
* 3. No active starter, BUT a starter-selecting PRD is still draft -> DEFER:
|
|
188
|
+
* leave the repo empty (no foreclosing placeholder). The worktree-provisioning
|
|
189
|
+
* safety net re-runs this once the PRD activates and seeds the genesis then.
|
|
190
|
+
* 4. Otherwise (no starter anywhere, or the clone genuinely failed) -> write an
|
|
191
|
+
* empty placeholder commit so git operations are never wedged.
|
|
192
|
+
*/
|
|
193
|
+
export async function ensureInitialCommit(config, deps = {}) {
|
|
194
|
+
const d = { ...defaultDeps, ...deps };
|
|
195
|
+
if (d.hasCommits(config.repoPath)) {
|
|
196
|
+
return { committed: true, seeded: false, deferred: false };
|
|
197
|
+
}
|
|
198
|
+
const genesis = await seedGenesisFromStarter(config, d);
|
|
199
|
+
if (genesis.seeded) {
|
|
200
|
+
return { committed: true, seeded: true, deferred: false, genesis };
|
|
201
|
+
}
|
|
202
|
+
// Defer ONLY for the genuinely-pending case. A clone/commit failure on an
|
|
203
|
+
// active selection (reason !== 'no-starter-selected') must still fall through
|
|
204
|
+
// to a placeholder -- never leave the product permanently without a commit.
|
|
205
|
+
if (genesis.reason === 'no-starter-selected') {
|
|
206
|
+
let pending = false;
|
|
207
|
+
try {
|
|
208
|
+
pending = await d.hasPendingStarterSelection(config.productId);
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
d.log(`[genesis] could not check pending starter PRDs: ${err.message}`);
|
|
212
|
+
}
|
|
213
|
+
if (pending) {
|
|
214
|
+
d.log('[genesis] a starter-selecting PRD exists but is not active yet -- ' +
|
|
215
|
+
'deferring the initial commit so genesis can seed once it activates');
|
|
216
|
+
return { committed: false, seeded: false, deferred: true, genesis };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Fall back to an empty placeholder initial commit.
|
|
220
|
+
let commit = d.runGit(['commit', '--allow-empty', '-m', PLACEHOLDER_COMMIT_MESSAGE], config.repoPath);
|
|
221
|
+
if (!commit.success) {
|
|
222
|
+
// Retry with an explicit committer identity scoped to this command only.
|
|
223
|
+
commit = d.runGit([
|
|
224
|
+
'-c', 'user.name=Telora Factory',
|
|
225
|
+
'-c', 'user.email=factory@telora.local',
|
|
226
|
+
'commit', '--allow-empty', '-m', PLACEHOLDER_COMMIT_MESSAGE,
|
|
227
|
+
], config.repoPath);
|
|
228
|
+
}
|
|
229
|
+
return { committed: commit.success, seeded: false, deferred: false, genesis };
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=git-genesis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-genesis.js","sourceRoot":"","sources":["../src/git-genesis.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe/C,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGlJ,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,cAAc,EACd,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAIvB;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFjE"}
|
package/dist/git.js
CHANGED
|
@@ -17,6 +17,7 @@ import { configureMergeLock } from './git-merge-lock.js';
|
|
|
17
17
|
import { ensureIntegrationBranch, repoHasCommits } from './git-branch.js';
|
|
18
18
|
import { syncIntegrationWithMain } from './git-integration.js';
|
|
19
19
|
import { runGitSync } from './git-types.js';
|
|
20
|
+
import { ensureInitialCommit } from './git-genesis.js';
|
|
20
21
|
// ── Re-exports from sub-modules ─────────────────────────────────
|
|
21
22
|
// git-types.ts: shared types and utilities
|
|
22
23
|
export { runGitSync, DEFAULT_GIT_TIMEOUT_MS } from './git-types.js';
|
|
@@ -59,15 +60,37 @@ export async function initGit(config) {
|
|
|
59
60
|
pruneWorktrees(config.repoPath);
|
|
60
61
|
// Empty repos need an initial commit before branches or worktrees can be created.
|
|
61
62
|
// Create one automatically so the full git subsystem initializes immediately.
|
|
63
|
+
// When the product's active PRD selects a starter repo, seed the genesis
|
|
64
|
+
// commit from that polished starter instead of an empty commit (focus
|
|
65
|
+
// 80ecc233) -- the agent then starts ABOVE the UX floor. Falls back to the
|
|
66
|
+
// empty commit when there is no starter / it cannot be cloned.
|
|
62
67
|
if (!repoHasCommits(config.repoPath)) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
const init = await ensureInitialCommit({
|
|
69
|
+
repoPath: config.repoPath,
|
|
70
|
+
productId: config.productId,
|
|
71
|
+
});
|
|
72
|
+
if (init.seeded) {
|
|
73
|
+
const g = init.genesis;
|
|
74
|
+
console.log(`Genesis commit seeded from starter ${g?.starterRepoId} ` +
|
|
75
|
+
`(${g?.gitUrl} @ ${g?.ref} -> ${g?.resolvedSha?.slice(0, 12)})`);
|
|
76
|
+
}
|
|
77
|
+
else if (init.deferred) {
|
|
78
|
+
// A starter-selecting PRD is still draft -- leave the repo empty rather
|
|
79
|
+
// than foreclose genesis with a placeholder. The worktree-provisioning
|
|
80
|
+
// safety net seeds it once the PRD activates.
|
|
81
|
+
console.log('Repository has no commits -- deferring initial commit until a ' +
|
|
82
|
+
'starter-selecting PRD activates (genesis will seed it then)');
|
|
83
|
+
console.log('Git subsystem initialized (limited -- waiting for starter PRD / first commit)');
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
else if (!init.committed) {
|
|
87
|
+
console.error('Failed to create initial commit');
|
|
67
88
|
console.log('Git subsystem initialized (limited -- waiting for first commit)');
|
|
68
89
|
return;
|
|
69
90
|
}
|
|
70
|
-
|
|
91
|
+
else {
|
|
92
|
+
console.log(`Repository has no commits (${init.genesis?.reason}) -- created empty initial commit for Telora`);
|
|
93
|
+
}
|
|
71
94
|
}
|
|
72
95
|
// Ensure integration branch exists
|
|
73
96
|
await ensureIntegrationBranch(config);
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,oDAAoD;AACpD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvF,8CAA8C;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,14 @@ export declare function buildNegativeBranchUserMessage(inputs: NegativeBranchInp
|
|
|
56
56
|
* Strips a leading bullet/number if the model added one despite the prompt.
|
|
57
57
|
*/
|
|
58
58
|
export declare function parseNegativeBranchCandidates(raw: string): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Build the argv for the claude CLI invocation. Exposed for tests.
|
|
61
|
+
*
|
|
62
|
+
* NOTE: must NOT include `--bare` -- that flag makes the CLI skip credential
|
|
63
|
+
* loading, print "Not logged in" to stdout, and exit 1 (the negative-branch
|
|
64
|
+
* pass died silently before it ran).
|
|
65
|
+
*/
|
|
66
|
+
export declare function buildNegativeBranchCliArgs(systemPrompt: string): string[];
|
|
59
67
|
/**
|
|
60
68
|
* Generate candidate negative-branch UDE statements for an injection.
|
|
61
69
|
*
|
|
@@ -83,6 +91,17 @@ export interface ProposeNegativeBranchesDeps {
|
|
|
83
91
|
generate?: (inputs: NegativeBranchInputs, opts?: NegativeBranchOptions) => Promise<string[]>;
|
|
84
92
|
/** Options forwarded to the default generator (model/spawn overrides). */
|
|
85
93
|
generateOptions?: NegativeBranchOptions;
|
|
94
|
+
/**
|
|
95
|
+
* Injectable clock for the durable pass marker. Defaults to
|
|
96
|
+
* `() => new Date().toISOString()`. Tests pass a fixed value so the stamped
|
|
97
|
+
* timestamp is deterministic. Kept as a thunk (not a bare value) mirroring the
|
|
98
|
+
* module's other injectable-deps style. The clock is read AFTER generation +
|
|
99
|
+
* proposal creation complete and just BEFORE the stamp write -- i.e. the
|
|
100
|
+
* timestamp marks when the pass finished its work, immediately prior to
|
|
101
|
+
* persisting the marker (it cannot be read after the write resolves, since the
|
|
102
|
+
* value being written is what the write persists).
|
|
103
|
+
*/
|
|
104
|
+
now?: () => string;
|
|
86
105
|
}
|
|
87
106
|
export interface ProposeNegativeBranchesResult {
|
|
88
107
|
/** Candidate statements the model produced. */
|
|
@@ -91,6 +110,14 @@ export interface ProposeNegativeBranchesResult {
|
|
|
91
110
|
proposalIds: string[];
|
|
92
111
|
/** Per-candidate creation errors (creation failures do not abort the rest). */
|
|
93
112
|
errors: string[];
|
|
113
|
+
/**
|
|
114
|
+
* The ISO timestamp stamped onto the injection's
|
|
115
|
+
* `negative_branch_pass_ran_at` marker, or null if the stamp write failed.
|
|
116
|
+
* The pass having RUN (this being non-null) is what gates presentability --
|
|
117
|
+
* NOT whether `candidates` is empty. An empty candidate set with a set marker
|
|
118
|
+
* is the honest "ran clean" answer.
|
|
119
|
+
*/
|
|
120
|
+
passRanAt: string | null;
|
|
94
121
|
}
|
|
95
122
|
/**
|
|
96
123
|
* Run generation for an injection, then persist each candidate as a
|
|
@@ -98,7 +125,11 @@ export interface ProposeNegativeBranchesResult {
|
|
|
98
125
|
* injection that introduces it. Idempotency / dedupe is a human concern --
|
|
99
126
|
* proposals are surfaced, not auto-applied.
|
|
100
127
|
*
|
|
101
|
-
* A clean injection produces no candidates and creates no proposals
|
|
128
|
+
* A clean injection produces no candidates and creates no proposals -- but the
|
|
129
|
+
* pass still COMPLETED, so the injection's `negative_branch_pass_ran_at` marker
|
|
130
|
+
* is stamped regardless of candidate count (as long as generation did not
|
|
131
|
+
* throw). That durable marker, not the candidate count, is what later gates
|
|
132
|
+
* tree presentability: "ran clean" must be distinguishable from "never ran".
|
|
102
133
|
*/
|
|
103
134
|
export declare function proposeNegativeBranchesForInjection(inputs: ProposeNegativeBranchesInputs, deps?: ProposeNegativeBranchesDeps): Promise<ProposeNegativeBranchesResult>;
|
|
104
135
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"negative-branch.d.ts","sourceRoot":"","sources":["../src/negative-branch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAK9D,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,YAAY,CAAC;IACzE;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9E;AAID,eAAO,MAAM,6BAA6B,4yBAQ4C,CAAC;AAEvF,gEAAgE;AAChE,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,+EAA+E;AAC/E,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAYnF;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBnE;
|
|
1
|
+
{"version":3,"file":"negative-branch.d.ts","sourceRoot":"","sources":["../src/negative-branch.ts"],"names":[],"mappings":"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"}
|
package/dist/negative-branch.js
CHANGED
|
@@ -78,18 +78,27 @@ export function parseNegativeBranchCandidates(raw) {
|
|
|
78
78
|
}
|
|
79
79
|
return out;
|
|
80
80
|
}
|
|
81
|
-
/**
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Build the argv for the claude CLI invocation. Exposed for tests.
|
|
83
|
+
*
|
|
84
|
+
* NOTE: must NOT include `--bare` -- that flag makes the CLI skip credential
|
|
85
|
+
* loading, print "Not logged in" to stdout, and exit 1 (the negative-branch
|
|
86
|
+
* pass died silently before it ran).
|
|
87
|
+
*/
|
|
88
|
+
export function buildNegativeBranchCliArgs(systemPrompt) {
|
|
89
|
+
return [
|
|
87
90
|
'--print',
|
|
88
91
|
'--output-format', 'text',
|
|
89
|
-
'--bare',
|
|
90
92
|
'--no-session-persistence',
|
|
91
93
|
'--system-prompt', systemPrompt,
|
|
92
94
|
];
|
|
95
|
+
}
|
|
96
|
+
/** Default model invocation: spawn the `claude` CLI in print mode and return stdout. */
|
|
97
|
+
function invokeClaudeCli(systemPrompt, userMessage, opts) {
|
|
98
|
+
const claudeBin = opts.claudeBin ?? 'claude';
|
|
99
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
100
|
+
const spawnFn = opts.spawnFn ?? ((cmd, args, sopts) => spawn(cmd, args, sopts));
|
|
101
|
+
const args = buildNegativeBranchCliArgs(systemPrompt);
|
|
93
102
|
return new Promise((resolve, reject) => {
|
|
94
103
|
let child;
|
|
95
104
|
try {
|
|
@@ -153,11 +162,18 @@ export async function generateNegativeBranches(inputs, opts = {}) {
|
|
|
153
162
|
* injection that introduces it. Idempotency / dedupe is a human concern --
|
|
154
163
|
* proposals are surfaced, not auto-applied.
|
|
155
164
|
*
|
|
156
|
-
* A clean injection produces no candidates and creates no proposals
|
|
165
|
+
* A clean injection produces no candidates and creates no proposals -- but the
|
|
166
|
+
* pass still COMPLETED, so the injection's `negative_branch_pass_ran_at` marker
|
|
167
|
+
* is stamped regardless of candidate count (as long as generation did not
|
|
168
|
+
* throw). That durable marker, not the candidate count, is what later gates
|
|
169
|
+
* tree presentability: "ran clean" must be distinguishable from "never ran".
|
|
157
170
|
*/
|
|
158
171
|
export async function proposeNegativeBranchesForInjection(inputs, deps = {}) {
|
|
159
172
|
const callApi = deps.callApi ?? defaultCallApi;
|
|
160
173
|
const generate = deps.generate ?? generateNegativeBranches;
|
|
174
|
+
const now = deps.now ?? (() => new Date().toISOString());
|
|
175
|
+
// If generation throws, the pass did NOT complete -- the caller catches and
|
|
176
|
+
// the marker stays null so the injection remains a surfaced doubt (no stamp).
|
|
161
177
|
const candidates = await generate({
|
|
162
178
|
injectionStatement: inputs.injectionStatement,
|
|
163
179
|
targetUdeStatements: inputs.targetUdeStatements,
|
|
@@ -190,6 +206,36 @@ export async function proposeNegativeBranchesForInjection(inputs, deps = {}) {
|
|
|
190
206
|
errors.push(`negative-branch proposal create failed: ${err.message}`);
|
|
191
207
|
}
|
|
192
208
|
}
|
|
193
|
-
|
|
209
|
+
// Generation completed (did not throw) -- stamp the durable per-injection
|
|
210
|
+
// marker so a clean (zero-candidate) pass leaves a trace. This is the whole
|
|
211
|
+
// point: presentability gates on a pass having RUN, never on the branch set
|
|
212
|
+
// being non-empty. Stamping is best-effort -- a write failure leaves the
|
|
213
|
+
// marker null (the injection re-runs next tick) but never aborts the result.
|
|
214
|
+
//
|
|
215
|
+
// RESIDUAL (documented, tolerated): the "RUN" signal is "generate() did not
|
|
216
|
+
// throw", so a DEGRADED model call that returns an empty body would be
|
|
217
|
+
// recorded as a clean pass (zero candidates, marker stamped) even though it
|
|
218
|
+
// surfaced nothing real. We accept this for two reasons: (1) the dominant
|
|
219
|
+
// silent-failure mode -- the `--bare` flag printing "Not logged in" and
|
|
220
|
+
// exiting 1 -- was removed (see buildNegativeBranchCliArgs), so a non-zero
|
|
221
|
+
// exit now throws and correctly leaves the marker null; and (2) a genuinely
|
|
222
|
+
// empty negative-branch set is the LEGITIMATE clean case this marker exists to
|
|
223
|
+
// record, and "did the model degrade vs honestly find nothing" is not
|
|
224
|
+
// mechanically separable here without a check that could itself be confidently
|
|
225
|
+
// wrong -- the negative-branch signal is deliberately advisory, not a hard
|
|
226
|
+
// gate, so a rare false-clean costs an advisory hint, never a blocked tree.
|
|
227
|
+
let passRanAt = null;
|
|
228
|
+
const stampedAt = now();
|
|
229
|
+
try {
|
|
230
|
+
await callApi('reality_tree_node_update', {
|
|
231
|
+
nodeId: inputs.injectionNodeId,
|
|
232
|
+
negativeBranchPassRanAt: stampedAt,
|
|
233
|
+
});
|
|
234
|
+
passRanAt = stampedAt;
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
errors.push(`negative-branch pass-marker stamp failed: ${err.message}`);
|
|
238
|
+
}
|
|
239
|
+
return { candidates, proposalIds, errors, passRanAt };
|
|
194
240
|
}
|
|
195
241
|
//# sourceMappingURL=negative-branch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"negative-branch.js","sourceRoot":"","sources":["../src/negative-branch.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"negative-branch.js","sourceRoot":"","sources":["../src/negative-branch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AA4BjE,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;sFAQyC,CAAC;AAEvF,gEAAgE;AAChE,MAAM,UAAU,+BAA+B;IAC7C,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,8BAA8B,CAAC,MAA4B;IACzE,MAAM,KAAK,GAAa,CAAC,eAAe,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,IAAI,CACR,uIAAuI,CACxI,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAW;IACvD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,qDAAqD;IACrD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,yDAAyD;QACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,wDAAwD;QACxD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,2DAA2D;QAC3D,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,YAAoB;IAC7D,OAAO;QACL,SAAS;QACT,iBAAiB,EAAE,MAAM;QACzB,0BAA0B;QAC1B,iBAAiB,EAAE,YAAY;KAChC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,eAAe,CACtB,YAAoB,EACpB,WAAmB,EACnB,IAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhF,MAAM,IAAI,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAEtD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,IAAI,KAAmB,CAAC;QACxB,IAAI,CAAC;YACH,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QACD,0EAA0E;QAC1E,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAE5C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAiC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAwC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAA4B,EAC5B,OAA8B,EAAE;IAEhC,MAAM,YAAY,GAAG,+BAA+B,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACpD,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAyDD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,MAAqC,EACrC,OAAoC,EAAE;IAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,wBAAwB,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzD,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,MAAM,QAAQ,CAC/B;QACE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;KAChD,EACD,IAAI,CAAC,eAAe,CACrB,CAAC;IAEF,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAA4B;YACtC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,6CAA6C;YAC5D,kBAAkB,EAAE,SAAS;YAC7B,gBAAgB,EAAE;gBAChB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,kBAAkB;gBAC5B,SAAS,EAAE,UAAU;gBACrB,iBAAiB,EAAE,MAAM,CAAC,eAAe;gBACzC,gBAAgB,EAAE,IAAI;aACvB;SACF,CAAC;QACF,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,2BAA2B,EAC3B,MAAM,CACP,CAAC;YACF,MAAM,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC7B,IAAI,OAAO,EAAE,KAAK,QAAQ;gBAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,2CAA4C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,EAAE;IACF,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,0EAA0E;IAC1E,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,+EAA+E;IAC/E,sEAAsE;IACtE,+EAA+E;IAC/E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,0BAA0B,EAAE;YACxC,MAAM,EAAE,MAAM,CAAC,eAAe;YAC9B,uBAAuB,EAAE,SAAS;SACnC,CAAC,CAAC;QACH,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,6CAA8C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACxD,CAAC"}
|
package/dist/output-monitor.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { setNarration } from './heartbeat.js';
|
|
10
10
|
import { CompletionDetector } from './completion/index.js';
|
|
11
11
|
import { ActivityTracker } from './activity-tracker.js';
|
|
12
|
-
import {
|
|
12
|
+
import { stampSessionStarted } from './session-stamp.js';
|
|
13
13
|
/**
|
|
14
14
|
* Set up stream parsing, activity tracking, and event logging for a team lead process.
|
|
15
15
|
*
|
|
@@ -49,13 +49,10 @@ function handleNeutralEvent(event, ctx) {
|
|
|
49
49
|
switch (event.kind) {
|
|
50
50
|
case 'session_started': {
|
|
51
51
|
console.log(` [focus-team] Session initialized (model: ${event.model ?? 'unknown'})`);
|
|
52
|
-
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
updateFocusClaudeSessionId(focusId, teamState.lineage, event.sessionId).catch((err) => {
|
|
57
|
-
console.warn(`[focus-executor] Failed to persist session ID for "${focusName}":`, err.message);
|
|
58
|
-
});
|
|
52
|
+
// Single stamp site (session-stamp.ts): writes the focus per-lineage resume
|
|
53
|
+
// slot AND forward-stamps the Claude session id onto this lead segment so
|
|
54
|
+
// pass grouping is exact (INJ-A/INJ-B).
|
|
55
|
+
stampSessionStarted({ teamState, focusId, focusName, eventSessionId: event.sessionId });
|
|
59
56
|
break;
|
|
60
57
|
}
|
|
61
58
|
case 'subagent_activity': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-monitor.js","sourceRoot":"","sources":["../src/output-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"output-monitor.js","sourceRoot":"","sources":["../src/output-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAoBzD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAA4B;IAChE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACpF,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAEpD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IACtC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAEpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;IAC5B,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAElD,sDAAsD;IACtD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IACvD,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/B,6EAA6E;IAC7E,6DAA6D;IAC7D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAChC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAiB,EAAE,EAAE;QAC7C,kBAAkB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC;AACzD,CAAC;AAED,yEAAyE;AACzE,SAAS,kBAAkB,CACzB,KAAiB,EACjB,GAAsE;IAEtE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC9C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,8CAA8C,KAAK,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;YACvF,4EAA4E;YAC5E,0EAA0E;YAC1E,wCAAwC;YACxC,mBAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACxF,MAAM;QACR,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,QAAQ,YAAY,IAAI,EAAE,CAAC,CAAC;YAChH,MAAM;QACR,CAAC;QACD;YACE,MAAM;IACV,CAAC;AACH,CAAC"}
|
package/dist/prd-controller.d.ts
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
* Foci -> Delivery -> Issue executor.
|
|
16
16
|
*/
|
|
17
17
|
import type { DaemonConfig } from './types.js';
|
|
18
|
-
import { type ClearancePredicate, type ClearanceContext, type ClearanceVerdict } from './prd-clearance-engine.js';
|
|
19
18
|
import { type Prd, type PrtNode, type PrtEdge, type Pathway } from './queries/prd.js';
|
|
20
19
|
import { computePrtFrontier } from './prd-frontier.js';
|
|
21
20
|
import { isPathwayViable } from './prd-viability.js';
|
|
@@ -86,7 +85,6 @@ export interface PrdControllerDeps {
|
|
|
86
85
|
focusId: string;
|
|
87
86
|
executionStatus: string;
|
|
88
87
|
}>>;
|
|
89
|
-
evaluateClearance: (predicate: ClearancePredicate, ctx: ClearanceContext) => Promise<ClearanceVerdict>;
|
|
90
88
|
markNodeCleared: (nodeId: string) => Promise<void>;
|
|
91
89
|
/**
|
|
92
90
|
* Finalize a completed frontier focus to status=complete via the sanctioned
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd-controller.d.ts","sourceRoot":"","sources":["../src/prd-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,
|
|
1
|
+
{"version":3,"file":"prd-controller.d.ts","sourceRoot":"","sources":["../src/prd-controller.ts"],"names":[],"mappings":"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"}
|