@telora/daemon 0.22.290 → 0.22.293
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 -2
- package/build-info.json +2 -2
- package/dist/backends/index.js +1 -1
- package/dist/cli/connect/config-write.d.ts.map +1 -1
- package/dist/cli/connect/config-write.js +2 -1
- package/dist/cli/connect/config-write.js.map +1 -1
- package/dist/composition/execution-spawn-context.d.ts.map +1 -1
- package/dist/composition/execution-spawn-context.js +1 -0
- package/dist/composition/execution-spawn-context.js.map +1 -1
- package/dist/composition/focus-activity-live-sources.d.ts.map +1 -1
- package/dist/composition/focus-activity-live-sources.js +3 -0
- package/dist/composition/focus-activity-live-sources.js.map +1 -1
- package/dist/composition/verify-probe-context.d.ts +7 -0
- package/dist/composition/verify-probe-context.d.ts.map +1 -1
- package/dist/composition/verify-probe-context.js +55 -3
- package/dist/composition/verify-probe-context.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +4 -3
- package/dist/config/config.js.map +1 -1
- package/dist/config/session-cap.d.ts +89 -0
- package/dist/config/session-cap.d.ts.map +1 -0
- package/dist/config/session-cap.js +176 -0
- package/dist/config/session-cap.js.map +1 -0
- package/dist/daemon-state/focus-team-state.d.ts +21 -1
- package/dist/daemon-state/focus-team-state.d.ts.map +1 -1
- package/dist/daemon-state/focus-team-state.js +36 -1
- package/dist/daemon-state/focus-team-state.js.map +1 -1
- package/dist/directive/directive-queue.js +1 -1
- package/dist/focus/focus-activity-poll-facts.d.ts.map +1 -1
- package/dist/focus/focus-activity-poll-facts.js +2 -1
- package/dist/focus/focus-activity-poll-facts.js.map +1 -1
- package/dist/focus/focus-activity-producers.d.ts +7 -1
- package/dist/focus/focus-activity-producers.d.ts.map +1 -1
- package/dist/focus/focus-activity-producers.js +19 -7
- package/dist/focus/focus-activity-producers.js.map +1 -1
- package/dist/focus/focus-activity-record.d.ts.map +1 -1
- package/dist/focus/focus-activity-record.js +4 -1
- package/dist/focus/focus-activity-record.js.map +1 -1
- package/dist/focus/focus-activity-sources.d.ts +4 -0
- package/dist/focus/focus-activity-sources.d.ts.map +1 -1
- package/dist/focus/focus-activity-sources.js.map +1 -1
- package/dist/focus/heartbeat-metadata.d.ts.map +1 -1
- package/dist/focus/heartbeat-metadata.js +6 -0
- package/dist/focus/heartbeat-metadata.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/queries/delivery-gate-state/delivery-gate-holds.d.ts +25 -1
- package/dist/queries/delivery-gate-state/delivery-gate-holds.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state/delivery-gate-state.d.ts +3 -1
- package/dist/queries/delivery-gate-state/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state/delivery-gate-state.js.map +1 -1
- package/dist/shell/config-hot-reload.d.ts +11 -0
- package/dist/shell/config-hot-reload.d.ts.map +1 -1
- package/dist/shell/config-hot-reload.js +12 -0
- package/dist/shell/config-hot-reload.js.map +1 -1
- package/dist/shell/unified-engine-lifecycle.d.ts +8 -1
- package/dist/shell/unified-engine-lifecycle.d.ts.map +1 -1
- package/dist/shell/unified-engine-lifecycle.js +44 -24
- package/dist/shell/unified-engine-lifecycle.js.map +1 -1
- package/dist/shell/unified-init.d.ts +5 -1
- package/dist/shell/unified-init.d.ts.map +1 -1
- package/dist/shell/unified-init.js +2 -2
- package/dist/shell/unified-init.js.map +1 -1
- package/dist/shell/unified-shell-config.d.ts +2 -1
- package/dist/shell/unified-shell-config.d.ts.map +1 -1
- package/dist/shell/unified-shell-config.js +9 -3
- package/dist/shell/unified-shell-config.js.map +1 -1
- package/dist/shell/unified-shell-status.js +1 -1
- package/dist/shell/unified-shell-status.js.map +1 -1
- package/dist/shell/unified-shell.d.ts.map +1 -1
- package/dist/shell/unified-shell.js +2 -1
- package/dist/shell/unified-shell.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +4 -0
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +4 -0
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/team-working-delivery.d.ts +76 -0
- package/dist/spawn/team-working-delivery.d.ts.map +1 -0
- package/dist/spawn/team-working-delivery.js +76 -0
- package/dist/spawn/team-working-delivery.js.map +1 -0
- package/dist/testing/fake-npm-registry.d.ts +31 -0
- package/dist/testing/fake-npm-registry.d.ts.map +1 -0
- package/dist/testing/fake-npm-registry.js +127 -0
- package/dist/testing/fake-npm-registry.js.map +1 -0
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/config.d.ts +30 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/focus-team-state.d.ts +14 -0
- package/dist/types/focus-team-state.d.ts.map +1 -1
- package/dist/types/focus-team-state.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/install-probe/in-repo-publish.d.ts +154 -0
- package/dist/verify/install-probe/in-repo-publish.d.ts.map +1 -0
- package/dist/verify/install-probe/in-repo-publish.js +183 -0
- package/dist/verify/install-probe/in-repo-publish.js.map +1 -0
- package/dist/verify/install-probe/install-probe-tick.d.ts +23 -2
- package/dist/verify/install-probe/install-probe-tick.d.ts.map +1 -1
- package/dist/verify/install-probe/install-probe-tick.js +84 -12
- package/dist/verify/install-probe/install-probe-tick.js.map +1 -1
- package/dist/verify/install-probe/install-probe.d.ts +16 -0
- package/dist/verify/install-probe/install-probe.d.ts.map +1 -1
- package/dist/verify/install-probe/install-probe.js +35 -19
- package/dist/verify/install-probe/install-probe.js.map +1 -1
- package/dist/verify/install-probe/npm-unresolved.d.ts +37 -0
- package/dist/verify/install-probe/npm-unresolved.d.ts.map +1 -0
- package/dist/verify/install-probe/npm-unresolved.js +63 -0
- package/dist/verify/install-probe/npm-unresolved.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/spawn/team-working-delivery.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
5
|
+
import { isStatusTerminal } from '../workflow/stage-classifier.js';
|
|
6
|
+
import { recordTeamWorkingDelivery, seedTeamResolvingWithoutDelivery, seedTeamWorkingDelivery, } from '../daemon-state/focus-team-state.js';
|
|
7
|
+
/** The issue tool, as a Claude (`mcp__<server>__<tool>`) or Codex (`<server>.<tool>`) tool name ends. */
|
|
8
|
+
const ISSUE_TOOL_SUFFIX = 'telora_product_issue';
|
|
9
|
+
const IN_PROGRESS = 'In Progress';
|
|
10
|
+
const str = (v) => (typeof v === 'string' && v.length > 0 ? v : null);
|
|
11
|
+
/** The claim a tool-activity event makes, or null when it names no delivery the team is working. */
|
|
12
|
+
export function workingDeliveryClaim(event) {
|
|
13
|
+
if (event.kind !== 'tool_activity' || !event.tool.endsWith(ISSUE_TOOL_SUFFIX) || !event.input)
|
|
14
|
+
return null;
|
|
15
|
+
const { action, status, issueId, deliveryId } = event.input;
|
|
16
|
+
if (action === 'update') {
|
|
17
|
+
const id = str(issueId);
|
|
18
|
+
return status === IN_PROGRESS && id ? { issueId: id } : null;
|
|
19
|
+
}
|
|
20
|
+
if (action === 'create' || action === 'list') {
|
|
21
|
+
const id = str(deliveryId);
|
|
22
|
+
return id ? { deliveryId: id } : null;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Record the delivery `event` shows the team working, if it shows one. Resolves
|
|
28
|
+
* an issue claim through the focus's issues; the observation is stamped with the
|
|
29
|
+
* event's arrival time, so a slower resolution never overwrites a newer one.
|
|
30
|
+
*/
|
|
31
|
+
export async function noteTeamWorkingDelivery(event, teamState, focusId, deps, observedAt = Date.now()) {
|
|
32
|
+
const claim = workingDeliveryClaim(event);
|
|
33
|
+
if (!claim)
|
|
34
|
+
return;
|
|
35
|
+
if ('deliveryId' in claim) {
|
|
36
|
+
if (teamState.knownDeliveryIds.has(claim.deliveryId)) {
|
|
37
|
+
recordTeamWorkingDelivery(teamState, claim.deliveryId, observedAt);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const issue = (await deps.getFocusIssues(focusId)).find((i) => i.id === claim.issueId);
|
|
42
|
+
// Bound to teamState: if this team exited while the lookup ran, its replacement is untouched.
|
|
43
|
+
if (issue)
|
|
44
|
+
recordTeamWorkingDelivery(teamState, issue.deliveryId, observedAt);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* What a team is spawned to work -- the daemon's own spawn decision, so a
|
|
48
|
+
* fresh team's entry is truthful before its first act: a review pass judges
|
|
49
|
+
* the first delivery in verify (by rank); a coding pass works the first
|
|
50
|
+
* delivery the spawn handed it as actionable. A spawn that handed it none (a
|
|
51
|
+
* directive or escalation-answer spawn) names the first delivery still open.
|
|
52
|
+
* A focus with no deliveries is being planned; a focus whose deliveries are
|
|
53
|
+
* all done or cancelled has none to work, so the team names none -- never a
|
|
54
|
+
* completed delivery.
|
|
55
|
+
*/
|
|
56
|
+
export function workingDeliveryAtSpawn(sessionType, deliveries, actionable) {
|
|
57
|
+
if (sessionType === 'review') {
|
|
58
|
+
const inVerify = deliveries.find((d) => d.executionStatus === DELIVERY_STATUS.VERIFY);
|
|
59
|
+
if (inVerify)
|
|
60
|
+
return { kind: 'delivery', deliveryId: inVerify.id };
|
|
61
|
+
}
|
|
62
|
+
const named = actionable[0] ?? deliveries.find((d) => !isStatusTerminal(d.executionStatus ?? ''));
|
|
63
|
+
if (named)
|
|
64
|
+
return { kind: 'delivery', deliveryId: named.id };
|
|
65
|
+
return deliveries.length === 0 ? { kind: 'planning' } : { kind: 'resolving' };
|
|
66
|
+
}
|
|
67
|
+
/** Seed the spawned team's working target from its spawn decision (planning seeds nothing). */
|
|
68
|
+
export function seedWorkingDeliveryAtSpawn(teamState, deliveries, actionable) {
|
|
69
|
+
const sessionType = teamState.sessionType === 'review' ? 'review' : 'coding';
|
|
70
|
+
const target = workingDeliveryAtSpawn(sessionType, deliveries, actionable);
|
|
71
|
+
if (target.kind === 'delivery')
|
|
72
|
+
seedTeamWorkingDelivery(teamState, target.deliveryId);
|
|
73
|
+
else if (target.kind === 'resolving')
|
|
74
|
+
seedTeamResolvingWithoutDelivery(teamState);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=team-working-delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-working-delivery.js","sourceRoot":"","sources":["../../src/spawn/team-working-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** One publish the registry accepted (or refused). */
|
|
2
|
+
export interface RecordedPublish {
|
|
3
|
+
name: string;
|
|
4
|
+
version: string;
|
|
5
|
+
/** The dist-tags the publish request carried, e.g. { pending: '0.2.102' }. */
|
|
6
|
+
distTags: Record<string, string>;
|
|
7
|
+
status: number;
|
|
8
|
+
}
|
|
9
|
+
/** One dist-tag write the registry received. */
|
|
10
|
+
export interface RecordedTagWrite {
|
|
11
|
+
name: string;
|
|
12
|
+
tag: string;
|
|
13
|
+
version: string | null;
|
|
14
|
+
method: string;
|
|
15
|
+
}
|
|
16
|
+
export interface FakeNpmRegistry {
|
|
17
|
+
/** Base URL with a trailing slash, e.g. `http://127.0.0.1:43123/`. */
|
|
18
|
+
url: string;
|
|
19
|
+
publishes: RecordedPublish[];
|
|
20
|
+
tagWrites: RecordedTagWrite[];
|
|
21
|
+
/** Versions currently held for `name`. */
|
|
22
|
+
versions(name: string): string[];
|
|
23
|
+
/** Current dist-tags for `name`. */
|
|
24
|
+
distTags(name: string): Record<string, string>;
|
|
25
|
+
/** The tarball bytes published for `name@version`, if any. */
|
|
26
|
+
tarball(name: string, version: string): Buffer | undefined;
|
|
27
|
+
close(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
/** Start a registry on an ephemeral 127.0.0.1 port. */
|
|
30
|
+
export declare function startFakeNpmRegistry(): Promise<FakeNpmRegistry>;
|
|
31
|
+
//# sourceMappingURL=fake-npm-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-npm-registry.d.ts","sourceRoot":"","sources":["../../src/testing/fake-npm-registry.ts"],"names":[],"mappings":"AAmBA,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,8DAA8D;IAC9D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAoBD,uDAAuD;AACvD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC,CA2FrE"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/integration/in-repo-publish-branch.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* An in-process npm registry for tests that drive the real `npm` binary.
|
|
6
|
+
*
|
|
7
|
+
* Serves packuments and tarballs and accepts `npm publish` (PUT) and
|
|
8
|
+
* `npm dist-tag` (PUT/DELETE on /-/package/<name>/dist-tags/<tag>), so a test
|
|
9
|
+
* observes what npm actually sent -- the dist-tag a publish carried, which
|
|
10
|
+
* versions exist, what `latest` names -- instead of asserting an argv it built.
|
|
11
|
+
* A version published twice answers 409, as a real registry does.
|
|
12
|
+
*
|
|
13
|
+
* @module testing/fake-npm-registry
|
|
14
|
+
*/
|
|
15
|
+
import { createServer } from 'node:http';
|
|
16
|
+
function readBody(req) {
|
|
17
|
+
return new Promise((resolveBody, reject) => {
|
|
18
|
+
const chunks = [];
|
|
19
|
+
req.on('data', (c) => chunks.push(c));
|
|
20
|
+
req.on('end', () => resolveBody(Buffer.concat(chunks)));
|
|
21
|
+
req.on('error', reject);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function json(res, status, body) {
|
|
25
|
+
res.writeHead(status, { 'content-type': 'application/json' });
|
|
26
|
+
res.end(JSON.stringify(body));
|
|
27
|
+
}
|
|
28
|
+
function isRecord(v) {
|
|
29
|
+
return !!v && typeof v === 'object' && !Array.isArray(v);
|
|
30
|
+
}
|
|
31
|
+
/** Start a registry on an ephemeral 127.0.0.1 port. */
|
|
32
|
+
export async function startFakeNpmRegistry() {
|
|
33
|
+
const packages = new Map();
|
|
34
|
+
const publishes = [];
|
|
35
|
+
const tagWrites = [];
|
|
36
|
+
let base = '';
|
|
37
|
+
const packument = (p) => ({ name: p.name, 'dist-tags': p.distTags, versions: p.versions });
|
|
38
|
+
async function handle(req, res) {
|
|
39
|
+
const path = decodeURIComponent((req.url ?? '/').split('?')[0] ?? '/');
|
|
40
|
+
const tagMatch = /^\/-\/package\/(.+)\/dist-tags(?:\/([^/]+))?$/.exec(path);
|
|
41
|
+
if (tagMatch) {
|
|
42
|
+
const name = tagMatch[1] ?? '';
|
|
43
|
+
const pkg = packages.get(name);
|
|
44
|
+
if (!pkg)
|
|
45
|
+
return json(res, 404, { error: 'not found' });
|
|
46
|
+
if (req.method === 'GET')
|
|
47
|
+
return json(res, 200, pkg.distTags);
|
|
48
|
+
const tag = tagMatch[2] ?? '';
|
|
49
|
+
if (req.method === 'PUT') {
|
|
50
|
+
const raw = JSON.parse((await readBody(req)).toString('utf8'));
|
|
51
|
+
const version = typeof raw === 'string' ? raw : '';
|
|
52
|
+
tagWrites.push({ name, tag, version, method: 'PUT' });
|
|
53
|
+
if (!pkg.versions[version])
|
|
54
|
+
return json(res, 404, { error: `no version ${version}` });
|
|
55
|
+
pkg.distTags[tag] = version;
|
|
56
|
+
return json(res, 200, { ok: true });
|
|
57
|
+
}
|
|
58
|
+
if (req.method === 'DELETE') {
|
|
59
|
+
tagWrites.push({ name, tag, version: null, method: 'DELETE' });
|
|
60
|
+
delete pkg.distTags[tag];
|
|
61
|
+
return json(res, 200, { ok: true });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const tarball = /^\/(.+)\/-\/([^/]+\.tgz)$/.exec(path);
|
|
65
|
+
if (req.method === 'GET' && tarball) {
|
|
66
|
+
const bytes = packages.get(tarball[1] ?? '')?.tarballs.get(tarball[2] ?? '');
|
|
67
|
+
if (!bytes)
|
|
68
|
+
return json(res, 404, { error: 'not found' });
|
|
69
|
+
res.writeHead(200, { 'content-type': 'application/octet-stream' });
|
|
70
|
+
res.end(bytes);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const name = path.slice(1);
|
|
74
|
+
if (req.method === 'GET') {
|
|
75
|
+
const pkg = packages.get(name);
|
|
76
|
+
return pkg ? json(res, 200, packument(pkg)) : json(res, 404, { error: 'not found' });
|
|
77
|
+
}
|
|
78
|
+
if (req.method === 'PUT') {
|
|
79
|
+
const raw = JSON.parse((await readBody(req)).toString('utf8'));
|
|
80
|
+
if (!isRecord(raw) || !isRecord(raw.versions))
|
|
81
|
+
return json(res, 400, { error: 'bad publish' });
|
|
82
|
+
const distTags = {};
|
|
83
|
+
if (isRecord(raw['dist-tags'])) {
|
|
84
|
+
for (const [k, v] of Object.entries(raw['dist-tags']))
|
|
85
|
+
if (typeof v === 'string')
|
|
86
|
+
distTags[k] = v;
|
|
87
|
+
}
|
|
88
|
+
const pkg = packages.get(name) ?? { name, versions: {}, distTags: {}, tarballs: new Map() };
|
|
89
|
+
for (const [version, manifest] of Object.entries(raw.versions)) {
|
|
90
|
+
if (!isRecord(manifest))
|
|
91
|
+
continue;
|
|
92
|
+
if (pkg.versions[version]) {
|
|
93
|
+
publishes.push({ name, version, distTags, status: 409 });
|
|
94
|
+
return json(res, 409, { error: `cannot publish over existing version ${version}` });
|
|
95
|
+
}
|
|
96
|
+
const file = `${name.split('/').pop() ?? name}-${version}.tgz`;
|
|
97
|
+
const dist = isRecord(manifest.dist) ? manifest.dist : {};
|
|
98
|
+
pkg.versions[version] = { ...manifest, dist: { ...dist, tarball: `${base}${name}/-/${file}` } };
|
|
99
|
+
if (isRecord(raw._attachments)) {
|
|
100
|
+
const att = Object.values(raw._attachments)[0];
|
|
101
|
+
if (isRecord(att) && typeof att.data === 'string')
|
|
102
|
+
pkg.tarballs.set(file, Buffer.from(att.data, 'base64'));
|
|
103
|
+
}
|
|
104
|
+
publishes.push({ name, version, distTags, status: 201 });
|
|
105
|
+
}
|
|
106
|
+
Object.assign(pkg.distTags, distTags);
|
|
107
|
+
packages.set(name, pkg);
|
|
108
|
+
return json(res, 201, { ok: true });
|
|
109
|
+
}
|
|
110
|
+
json(res, 405, { error: `unsupported ${req.method} ${path}` });
|
|
111
|
+
}
|
|
112
|
+
const server = createServer((req, res) => {
|
|
113
|
+
handle(req, res).catch((err) => json(res, 500, { error: err.message }));
|
|
114
|
+
});
|
|
115
|
+
await new Promise(r => server.listen(0, '127.0.0.1', () => r()));
|
|
116
|
+
base = `http://127.0.0.1:${server.address().port}/`;
|
|
117
|
+
return {
|
|
118
|
+
url: base,
|
|
119
|
+
publishes,
|
|
120
|
+
tagWrites,
|
|
121
|
+
versions: (name) => Object.keys(packages.get(name)?.versions ?? {}),
|
|
122
|
+
distTags: (name) => ({ ...(packages.get(name)?.distTags ?? {}) }),
|
|
123
|
+
tarball: (name, version) => packages.get(name)?.tarballs.get(`${name.split('/').pop() ?? name}-${version}.tgz`),
|
|
124
|
+
close: () => new Promise(r => server.close(() => r())),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=fake-npm-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-npm-registry.js","sourceRoot":"","sources":["../../src/testing/fake-npm-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by:
|
|
2
|
+
// Pinned by: 297 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/index.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
4
|
/**
|
|
5
5
|
* Build an ActiveFocusRow (a getActiveFocuses row): an active, armed focus with
|
package/dist/types/config.d.ts
CHANGED
|
@@ -176,6 +176,11 @@ export interface DaemonConfig extends BaseConfig {
|
|
|
176
176
|
worktreeDir: string;
|
|
177
177
|
integrationBranch: string;
|
|
178
178
|
maxTotalSessions: number;
|
|
179
|
+
/**
|
|
180
|
+
* Where maxTotalSessions came from -- explicit, or derived from the host
|
|
181
|
+
* (config/session-cap.ts). Optional: configs built by hand (tests) omit it.
|
|
182
|
+
*/
|
|
183
|
+
maxTotalSessionsSource?: SessionCapSource;
|
|
179
184
|
tokenLimit: number;
|
|
180
185
|
costLimit: number;
|
|
181
186
|
/** Timeout in ms for acquiring the merge lock. Default: 300000 (5 min). */
|
|
@@ -224,4 +229,29 @@ export interface DaemonConfig extends BaseConfig {
|
|
|
224
229
|
*/
|
|
225
230
|
codexModel?: string;
|
|
226
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Where the effective cap came from. Published verbatim in heartbeat metadata
|
|
234
|
+
* (`maxTotalSessionsSource`) and rendered by the dashboard's slot-usage badge.
|
|
235
|
+
*/
|
|
236
|
+
export type SessionCapSource = {
|
|
237
|
+
mode: 'explicit';
|
|
238
|
+
/** 'env' = MAX_TOTAL_SESSIONS; 'config' = daemon.json maxTotalSessions. */
|
|
239
|
+
from: 'env' | 'config';
|
|
240
|
+
} | {
|
|
241
|
+
mode: 'auto';
|
|
242
|
+
cores: number;
|
|
243
|
+
/** floor(cores / 2) + 1. */
|
|
244
|
+
coreCap: number;
|
|
245
|
+
memory: SessionCapMemoryInputs;
|
|
246
|
+
/** Which bound produced the cap ('cores' on a tie). */
|
|
247
|
+
boundBy: 'cores' | 'memory';
|
|
248
|
+
};
|
|
249
|
+
/** The memory-bound inputs (MB) plus the cap they alone would allow. */
|
|
250
|
+
export interface SessionCapMemoryInputs {
|
|
251
|
+
totalMb: number;
|
|
252
|
+
reserveMb: number;
|
|
253
|
+
allowanceMb: number;
|
|
254
|
+
/** floor((totalMb - reserveMb) / allowanceMb), before the floor of 1. */
|
|
255
|
+
memoryCap: number;
|
|
256
|
+
}
|
|
227
257
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,6 +162,20 @@ export interface TeamActivity {
|
|
|
162
162
|
* toolActivityCount.
|
|
163
163
|
*/
|
|
164
164
|
readonly modelReachedAt?: number;
|
|
165
|
+
/**
|
|
166
|
+
* The delivery the team is working, as observed from its own Telora issue
|
|
167
|
+
* tool calls (spawn/team-working-delivery.ts), and the epoch ms of that
|
|
168
|
+
* observation. Published on the team's focus activity entry. Undefined until
|
|
169
|
+
* observed; never derived from delivery statuses.
|
|
170
|
+
*/
|
|
171
|
+
readonly workingDeliveryId?: string;
|
|
172
|
+
readonly workingDeliveryObservedAt?: number;
|
|
173
|
+
/**
|
|
174
|
+
* The team was spawned on a focus whose deliveries are all done or cancelled
|
|
175
|
+
* (the escalation-answer re-arm): it has no delivery to work, and is
|
|
176
|
+
* published as team_resolving until its own acts name one.
|
|
177
|
+
*/
|
|
178
|
+
readonly resolvingWithoutDelivery?: boolean;
|
|
165
179
|
}
|
|
166
180
|
/** The deliveries the team knows about, their workflow stage cursors, and which have merged mid-flight. Owner: `daemon-state/team-delivery-tracking.ts`. */
|
|
167
181
|
export interface TeamDeliveryTracking {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-team-state.d.ts","sourceRoot":"","sources":["../../src/types/focus-team-state.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvG;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IACxB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAAG,CAAC,GACvC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACvE,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC3D,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GACzD,CAAC,SAAS,MAAM,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAChE,CAAC,CAAC;AAEhB,iLAAiL;AACjL,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sCAAsC;IACtC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC7D;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAC7C;AAED,8GAA8G;AAC9G,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAE5C;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IACnD;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,kJAAkJ;AAClJ,MAAM,WAAW,YAAY;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-team-state.d.ts","sourceRoot":"","sources":["../../src/types/focus-team-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-team-state.js","sourceRoot":"","sources":["../../src/types/focus-team-state.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gEAAgE;AAChE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"focus-team-state.js","sourceRoot":"","sources":["../../src/types/focus-team-state.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gEAAgE;AAChE,gBAAgB;AAwiBhB;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAuD;IACnF,QAAQ,EAAE,2BAA2B;IACrC,SAAS,EAAE,kCAAkC;IAC7C,QAAQ,EAAE,kCAAkC;IAC5C,gBAAgB,EAAE,wCAAwC;IAC1D,SAAS,EAAE,yBAAyB;IACpC,eAAe,EAAE,sBAAsB;IACvC,cAAc,EAAE,gCAAgC;IAChD,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,wCAAwC;IACrD,QAAQ,EAAE,uCAAuC;IACjD,SAAS,EAAE,mDAAmD;IAC9D,UAAU,EAAE,4CAA4C;IACxD,OAAO,EAAE,qDAAqD;IAC9D,YAAY,EAAE,4BAA4B;IAC1C,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,6BAA6B;IACxC,aAAa,EAAE,8BAA8B;CAC9C,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by:
|
|
2
|
+
// Pinned by: 247 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
4
|
/**
|
|
5
5
|
* Domain-specific type re-exports.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish an in-repo @telora version a focus branch needs, from the branch itself.
|
|
3
|
+
*
|
|
4
|
+
* A focus branch that adds exports to an in-repo @telora package (daemon-core,
|
|
5
|
+
* mcp-products) must raise its consumers' range to a version that only /sync
|
|
6
|
+
* publishes, after merge to main. The clean-install probe then fails the
|
|
7
|
+
* branch's verify deliveries on a version nothing will publish until the branch
|
|
8
|
+
* merges -- which it cannot while verify holds. This module closes that loop:
|
|
9
|
+
* build and publish the version from the focus worktree under the `pending` dist-tag,
|
|
10
|
+
* regenerate the consumers' lockfiles, and commit them on the branch with the
|
|
11
|
+
* delivery's Telora-Delivery trailer. /sync still owns `latest` and the
|
|
12
|
+
* post-merge release; it adopts a pending version rather than bumping past it.
|
|
13
|
+
*
|
|
14
|
+
* It publishes ONLY when every failure the probe saw is such a version:
|
|
15
|
+
* - every non-passing package is resolution_failed (a registry outage is not
|
|
16
|
+
* published around),
|
|
17
|
+
* - npm named what it could not resolve for each (an unattributed failure is
|
|
18
|
+
* not guessed at),
|
|
19
|
+
* - every name is an in-repo @telora package (IN_REPO_PUBLISHABLE), and
|
|
20
|
+
* - the version each asks for is exactly the one on disk in the worktree.
|
|
21
|
+
* Anything else is declined with a note, and the probe keeps its verdict.
|
|
22
|
+
*
|
|
23
|
+
* A published version is irreversible, so it is built only from COMMITTED
|
|
24
|
+
* bytes. The build, pack and publish run in a detached checkout of the probed
|
|
25
|
+
* commit (InRepoPublishDeps.checkoutCommit), never in the live worktree a
|
|
26
|
+
* sibling may be editing: an edit made mid-build cannot reach the tarball, and
|
|
27
|
+
* neither can a dirty input outside the package directory (the daemon's publish
|
|
28
|
+
* stamps supabase/migrations into build-info.json). While a target's source or
|
|
29
|
+
* a consumer's manifest is uncommitted the publish is deferred as well
|
|
30
|
+
* (dirtyPublishInputs) -- that version is not final yet.
|
|
31
|
+
*
|
|
32
|
+
* Pure orchestration: every npm and git act runs through InRepoPublishDeps,
|
|
33
|
+
* bound at the composition root (composition/verify-probe-context.ts).
|
|
34
|
+
*
|
|
35
|
+
* History: docs/daemon/history-team-lifecycle.md (verify/install-probe/in-repo-publish.ts).
|
|
36
|
+
*
|
|
37
|
+
* @module in-repo-publish
|
|
38
|
+
*/
|
|
39
|
+
import type { InstallProbeResult } from './install-probe.js';
|
|
40
|
+
/**
|
|
41
|
+
* The dist-tag a branch-published version carries. NEVER `latest`: a daemon
|
|
42
|
+
* host or developer installing `@telora/<pkg>` without a version must keep
|
|
43
|
+
* getting what /sync released from main.
|
|
44
|
+
*/
|
|
45
|
+
export declare const PENDING_DIST_TAG = "pending";
|
|
46
|
+
/**
|
|
47
|
+
* The in-repo @telora packages the daemon may publish, in DEPENDENCY ORDER: a
|
|
48
|
+
* consumer is never published before a dependency it needs from the same pass.
|
|
49
|
+
*/
|
|
50
|
+
export declare const IN_REPO_PUBLISHABLE: ReadonlyArray<{
|
|
51
|
+
name: string;
|
|
52
|
+
dir: string;
|
|
53
|
+
}>;
|
|
54
|
+
/** One version to publish from the worktree. */
|
|
55
|
+
export interface PublishTarget {
|
|
56
|
+
name: string;
|
|
57
|
+
/** Repo-relative package dir. */
|
|
58
|
+
dir: string;
|
|
59
|
+
version: string;
|
|
60
|
+
}
|
|
61
|
+
/** What to do about a failed probe. */
|
|
62
|
+
export type InRepoPublishPlan = {
|
|
63
|
+
kind: 'publish';
|
|
64
|
+
publish: PublishTarget[];
|
|
65
|
+
relock: string[];
|
|
66
|
+
} | {
|
|
67
|
+
kind: 'decline';
|
|
68
|
+
reason: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Decide whether a failed probe is ONLY unpublished in-repo versions, and if so
|
|
72
|
+
* what to publish (dependency order) and which package dirs to re-lock. Pure.
|
|
73
|
+
*
|
|
74
|
+
* `workspaceVersion(dir)` reads the `version` of `<worktree>/<dir>/package.json`
|
|
75
|
+
* (null when absent or unreadable).
|
|
76
|
+
*/
|
|
77
|
+
export declare function planInRepoPublish(result: InstallProbeResult, workspaceVersion: (dir: string) => string | null): InRepoPublishPlan;
|
|
78
|
+
/**
|
|
79
|
+
* The `npm publish` argv for a branch-published version. The dist-tag is fixed
|
|
80
|
+
* here and nowhere else, so no caller can publish a branch version as `latest`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function publishArgs(): string[];
|
|
83
|
+
/** The lockfile regeneration argv, run in the consumer's own directory. */
|
|
84
|
+
export declare function relockArgs(): string[];
|
|
85
|
+
/** Injected IO. */
|
|
86
|
+
export interface InRepoPublishDeps {
|
|
87
|
+
/** `version` from `<worktreePath>/<dir>/package.json`, or null. */
|
|
88
|
+
readWorkspaceVersion: (worktreePath: string, dir: string) => string | null;
|
|
89
|
+
/**
|
|
90
|
+
* A detached checkout of commit `sha` of the worktree's repository, with the
|
|
91
|
+
* worktree's installed dependencies reachable, to build from. `release`
|
|
92
|
+
* removes it. Null when it could not be made.
|
|
93
|
+
*/
|
|
94
|
+
checkoutCommit: (worktreePath: string, sha: string) => {
|
|
95
|
+
root: string;
|
|
96
|
+
release: () => void;
|
|
97
|
+
} | null;
|
|
98
|
+
/** Run `npm <args>` in `cwd`; exit code (null if it could not start) + combined output. */
|
|
99
|
+
runNpm: (cwd: string, args: string[]) => Promise<{
|
|
100
|
+
exitCode: number | null;
|
|
101
|
+
output: string;
|
|
102
|
+
}>;
|
|
103
|
+
/** Repo-relative paths with uncommitted changes, or null when git could not say. */
|
|
104
|
+
uncommittedPaths: (worktreePath: string) => string[] | null;
|
|
105
|
+
/**
|
|
106
|
+
* Commit exactly `paths` with `message` and a `Telora-Delivery: <deliveryId>`
|
|
107
|
+
* trailer. Returns the new HEAD sha, or null when git made no commit.
|
|
108
|
+
*/
|
|
109
|
+
commitPaths: (worktreePath: string, paths: string[], message: string, deliveryId: string) => string | null;
|
|
110
|
+
}
|
|
111
|
+
/** What the daemon did about a failed probe. `note` goes on the gate entry. */
|
|
112
|
+
export type InRepoPublishOutcome =
|
|
113
|
+
/** Published; `sha` is the lockfile commit, null when no lockfile changed. Re-probe. */
|
|
114
|
+
{
|
|
115
|
+
kind: 'resolved';
|
|
116
|
+
sha: string | null;
|
|
117
|
+
published: PublishTarget[];
|
|
118
|
+
note: string;
|
|
119
|
+
} | {
|
|
120
|
+
kind: 'declined';
|
|
121
|
+
note: string;
|
|
122
|
+
}
|
|
123
|
+
/** Nothing done: the publish's inputs are uncommitted right now. Retry on a later tick. */
|
|
124
|
+
| {
|
|
125
|
+
kind: 'deferred';
|
|
126
|
+
note: string;
|
|
127
|
+
} | {
|
|
128
|
+
kind: 'failed';
|
|
129
|
+
note: string;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* The uncommitted paths that would make a publish ship content branch HEAD does
|
|
133
|
+
* not hold. A published version is irreversible (/sync cannot replace it), so
|
|
134
|
+
* it is built only from committed inputs: nothing under a publish target's
|
|
135
|
+
* directory (its source, manifest, build config) and no consumer manifest,
|
|
136
|
+
* lockfile or .npmrc the re-lock reads may be dirty. Pure.
|
|
137
|
+
*/
|
|
138
|
+
export declare function dirtyPublishInputs(plan: {
|
|
139
|
+
publish: PublishTarget[];
|
|
140
|
+
relock: string[];
|
|
141
|
+
}, dirty: readonly string[]): string[];
|
|
142
|
+
/**
|
|
143
|
+
* Publish, re-lock and commit, when the plan says the failure is only
|
|
144
|
+
* unpublished in-repo versions. Never throws for an npm or git failure: each is
|
|
145
|
+
* an outcome with a note naming the step and npm's own words (a host with no
|
|
146
|
+
* registry credentials reads as `could not publish ...: ENEEDAUTH`).
|
|
147
|
+
*/
|
|
148
|
+
export declare function publishAroundUnpublished(input: {
|
|
149
|
+
worktreePath: string;
|
|
150
|
+
headSha: string;
|
|
151
|
+
result: InstallProbeResult;
|
|
152
|
+
deliveryId: string;
|
|
153
|
+
}, deps: InRepoPublishDeps): Promise<InRepoPublishOutcome>;
|
|
154
|
+
//# sourceMappingURL=in-repo-publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-repo-publish.d.ts","sourceRoot":"","sources":["../../../src/verify/install-probe/in-repo-publish.ts"],"names":[],"mappings":"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"}
|