@songsid/agend 2.3.2-beta.9 → 2.3.2
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 +6 -0
- package/README.zh-TW.md +6 -0
- package/dist/agent-cli.js +48 -0
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +6 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.js +3 -0
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.js +2 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/claude-code.js +23 -1
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-session-lookup.d.ts +15 -0
- package/dist/backend/codex-session-lookup.js +58 -0
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex.js +15 -4
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-classic-archive.d.ts +57 -0
- package/dist/backend/kiro-classic-archive.js +622 -0
- package/dist/backend/kiro-classic-archive.js.map +1 -0
- package/dist/backend/kiro-classic-links.d.ts +24 -0
- package/dist/backend/kiro-classic-links.js +135 -0
- package/dist/backend/kiro-classic-links.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +100 -1
- package/dist/backend/kiro-identity.js +262 -31
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro-migration-verify.d.ts +10 -0
- package/dist/backend/kiro-migration-verify.js +52 -0
- package/dist/backend/kiro-migration-verify.js.map +1 -0
- package/dist/backend/kiro-reconcile-store.d.ts +27 -0
- package/dist/backend/kiro-reconcile-store.js +344 -0
- package/dist/backend/kiro-reconcile-store.js.map +1 -0
- package/dist/backend/kiro-v2-store-worker.js +35 -1
- package/dist/backend/kiro-v2-store-worker.js.map +1 -1
- package/dist/backend/kiro-v2-store.d.ts +31 -1
- package/dist/backend/kiro-v2-store.js +22 -12
- package/dist/backend/kiro-v2-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +124 -1
- package/dist/backend/kiro.js +553 -29
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +102 -0
- package/dist/backend/types.js +9 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/cache-service.d.ts +13 -1
- package/dist/cache-service.js +45 -2
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/ipc-timeouts.js +3 -0
- package/dist/channel/ipc-timeouts.js.map +1 -1
- package/dist/channel/mcp-tools.js +40 -5
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.js +2 -1
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +6 -0
- package/dist/classic-channel-manager.js +25 -0
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +50 -4
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +7 -1
- package/dist/config-validator.js +17 -8
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +66 -0
- package/dist/daemon.js +421 -19
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +15 -4
- package/dist/dashboard-permissions.js +49 -23
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/doctor.js +2 -1
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-control-audit.d.ts +1 -1
- package/dist/fleet-control-audit.js +3 -0
- package/dist/fleet-control-audit.js.map +1 -1
- package/dist/fleet-manager.d.ts +90 -3
- package/dist/fleet-manager.js +569 -41
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +9 -0
- package/dist/forged-envelope-scan.js +30 -5
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-instance.d.ts +24 -0
- package/dist/general-instance.js +53 -0
- package/dist/general-instance.js.map +1 -1
- package/dist/general-knowledge/skills/docker-install/SKILL.md +25 -0
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +5 -3
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +34 -0
- package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +32 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +32 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +57 -17
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +57 -17
- package/dist/instance-config-impact.js +3 -2
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +4 -0
- package/dist/instance-lifecycle.js +7 -0
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/kiro-migrate.d.ts +19 -2
- package/dist/kiro-migrate.js +133 -35
- package/dist/kiro-migrate.js.map +1 -1
- package/dist/kiro-reconcile.d.ts +21 -0
- package/dist/kiro-reconcile.js +88 -0
- package/dist/kiro-reconcile.js.map +1 -0
- package/dist/kiro-session-proof.d.ts +41 -0
- package/dist/kiro-session-proof.js +89 -0
- package/dist/kiro-session-proof.js.map +1 -0
- package/dist/kiro-tui-forensic.d.ts +19 -0
- package/dist/kiro-tui-forensic.js +124 -0
- package/dist/kiro-tui-forensic.js.map +1 -0
- package/dist/locale.js +198 -0
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +2 -2
- package/dist/log-service.js.map +1 -1
- package/dist/needs-you.d.ts +3 -1
- package/dist/needs-you.js +4 -2
- package/dist/needs-you.js.map +1 -1
- package/dist/office-levels.d.ts +64 -0
- package/dist/office-levels.js +66 -0
- package/dist/office-levels.js.map +1 -0
- package/dist/office-share-page.d.ts +3 -1
- package/dist/office-share-page.js +8 -3
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share-service.d.ts +6 -3
- package/dist/office-share-service.js +12 -8
- package/dist/office-share-service.js.map +1 -1
- package/dist/office-share.d.ts +45 -8
- package/dist/office-share.js +75 -15
- package/dist/office-share.js.map +1 -1
- package/dist/outbound-handlers.js +20 -1
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +47 -2
- package/dist/outbound-schemas.js +41 -2
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +1 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.d.ts +39 -1
- package/dist/quickstart-api.js +115 -17
- package/dist/quickstart-api.js.map +1 -1
- package/dist/remote-card-answer.d.ts +83 -0
- package/dist/remote-card-answer.js +208 -0
- package/dist/remote-card-answer.js.map +1 -0
- package/dist/remote-card-prompt.d.ts +38 -0
- package/dist/remote-card-prompt.js +86 -0
- package/dist/remote-card-prompt.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +28 -6
- package/dist/scheduler/task-board.js +66 -11
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/service-installer.d.ts +13 -0
- package/dist/service-installer.js +15 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/service-owner.d.ts +25 -0
- package/dist/service-owner.js +43 -2
- package/dist/service-owner.js.map +1 -1
- package/dist/settings-api.d.ts +2 -0
- package/dist/settings-api.js +18 -12
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +10 -5
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -4
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +1 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-form.d.ts +2 -2
- package/dist/setup-form.js +139 -93
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-i18n.d.ts +25 -0
- package/dist/setup-i18n.js +226 -0
- package/dist/setup-i18n.js.map +1 -0
- package/dist/task-board-waker.js +7 -2
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tool-permissions.js +18 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/transcript-sources.d.ts +1 -0
- package/dist/transcript-sources.js +20 -3
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/ui/backend-signin.js +4 -3
- package/dist/ui/chat-store.js +3 -2
- package/dist/ui/chat-strings.js +2 -2
- package/dist/ui/fleet-office-card.js +114 -0
- package/dist/ui/fleet-office-editor.js +81 -9
- package/dist/ui/fleet-office-layout.js +56 -11
- package/dist/ui/fleet-office-levels.js +105 -0
- package/dist/ui/fleet-office-model.js +9 -1
- package/dist/ui/fleet-office-pack.d.ts +15 -3
- package/dist/ui/fleet-office-pack.js +177 -23
- package/dist/ui/fleet-office-skin.js +39 -3
- package/dist/ui/fleet-office-store.js +74 -3
- package/dist/ui/fleet-office-view.js +8 -0
- package/dist/ui/fleet-office-zones.js +102 -19
- package/dist/ui/fleet-office.js +308 -44
- package/dist/ui/fleet-org.js +2 -0
- package/dist/ui/fleet-task-card.js +2 -2
- package/dist/ui/fleet-task-common.js +30 -7
- package/dist/ui/fleet-task-work.js +2 -2
- package/dist/ui/fleet-tasks.js +10 -11
- package/dist/ui/office-share-dialog.js +31 -7
- package/dist/ui/office-share-page.js +1 -0
- package/dist/ui/panel-chat.js +14 -2
- package/dist/ui/panel-log.js +4 -4
- package/dist/ui/panel-needs.js +1 -1
- package/dist/ui/panel-settings.js +16 -8
- package/dist/ui/settings-discord.js +3 -2
- package/dist/ui/settings-guests.js +17 -7
- package/dist/ui/settings-model.js +17 -9
- package/dist/ui/settings-registry.js +1 -0
- package/dist/ui/settings-strings.js +16 -4
- package/dist/ui/settings-token.js +3 -2
- package/dist/ui/settings-wizard.js +25 -9
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-stream.js +1 -1
- package/dist/ui/shared/app.css +70 -2
- package/dist/ui/shared/setup-host-text.js +107 -0
- package/dist/ui/structured-signin.js +89 -38
- package/dist/usage-rollup.d.ts +34 -3
- package/dist/usage-rollup.js +56 -3
- package/dist/usage-rollup.js.map +1 -1
- package/dist/web-api.d.ts +10 -1
- package/dist/web-api.js +207 -17
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +1 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-office-acts.d.ts +5 -2
- package/dist/web-office-acts.js +9 -4
- package/dist/web-office-acts.js.map +1 -1
- package/dist/web-office-pack-read.d.ts +35 -0
- package/dist/web-office-pack-read.js +252 -0
- package/dist/web-office-pack-read.js.map +1 -0
- package/dist/web-office-pack-tools.d.ts +241 -0
- package/dist/web-office-pack-tools.js +785 -0
- package/dist/web-office-pack-tools.js.map +1 -0
- package/dist/web-office-skins.d.ts +68 -4
- package/dist/web-office-skins.js +324 -33
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-office-store.d.ts +47 -4
- package/dist/web-office-store.js +124 -23
- package/dist/web-office-store.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/workflow-templates/default.md +1 -1
- package/package.json +2 -2
- package/templates/windows-shortcuts.ps1 +18 -17
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/** Explicit option-A reconciliation. Native V2 files are read/copied, never moved, rewritten or deleted. */
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { closeSync, constants, existsSync, fstatSync, fsyncSync, lstatSync, mkdirSync, openSync, readSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { atomicWriteFileSync } from "../atomic-write.js";
|
|
6
|
+
import { kiroCanonicalDirectory, kiroCarryCandidate, kiroOwnedConversation, kiroEngineFloor, isConsistentKiroIdentityRecord } from "./kiro-identity.js";
|
|
7
|
+
const hash = (v) => createHash("sha256").update(v).digest("hex");
|
|
8
|
+
const idPattern = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,199}$/;
|
|
9
|
+
const receiptPattern = /^[a-f0-9]{64}$/;
|
|
10
|
+
const equal = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
11
|
+
function syncDir(path) { const fd = openSync(path, constants.O_RDONLY); try {
|
|
12
|
+
fsyncSync(fd);
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
closeSync(fd);
|
|
16
|
+
} }
|
|
17
|
+
function privateDir(path) {
|
|
18
|
+
if (!existsSync(path))
|
|
19
|
+
mkdirSync(path, { mode: 0o700 });
|
|
20
|
+
const s = lstatSync(path);
|
|
21
|
+
if (!s.isDirectory() || s.mode & 0o077 || process.getuid && s.uid !== process.getuid())
|
|
22
|
+
throw new Error("Reconciliation directory is not private and owned");
|
|
23
|
+
syncDir(path);
|
|
24
|
+
syncDir(dirname(path));
|
|
25
|
+
}
|
|
26
|
+
function checkPrivateDir(path) {
|
|
27
|
+
const s = lstatSync(path);
|
|
28
|
+
if (!s.isDirectory() || s.mode & 0o077 || process.getuid && s.uid !== process.getuid())
|
|
29
|
+
throw new Error("Reconciliation directory is not private and owned");
|
|
30
|
+
}
|
|
31
|
+
function read(path, limit, privateFile = false) {
|
|
32
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
|
|
33
|
+
try {
|
|
34
|
+
const s = fstatSync(fd);
|
|
35
|
+
if (!s.isFile() || s.size > limit || process.getuid && s.uid !== process.getuid() || privateFile && s.mode & 0o077)
|
|
36
|
+
throw new Error("Reconciliation file is unsafe or oversized");
|
|
37
|
+
const bytes = Buffer.alloc(s.size);
|
|
38
|
+
let offset = 0;
|
|
39
|
+
while (offset < bytes.length) {
|
|
40
|
+
const n = readSync(fd, bytes, offset, bytes.length - offset, offset);
|
|
41
|
+
if (!n)
|
|
42
|
+
throw new Error("Reconciliation file was truncated");
|
|
43
|
+
offset += n;
|
|
44
|
+
}
|
|
45
|
+
const after = fstatSync(fd), atPath = lstatSync(path);
|
|
46
|
+
if (bytes.length !== s.size || after.size !== s.size || after.mtimeMs !== s.mtimeMs || after.ctimeMs !== s.ctimeMs
|
|
47
|
+
|| atPath.dev !== s.dev || atPath.ino !== s.ino)
|
|
48
|
+
throw new Error("Reconciliation file changed while reading");
|
|
49
|
+
return { bytes, fingerprint: { hash: hash(bytes), size: s.size, dev: s.dev, ino: s.ino, mtime: s.mtimeMs, ctime: s.ctimeMs } };
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
closeSync(fd);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function optional(path, limit, privateFile = false) {
|
|
56
|
+
try {
|
|
57
|
+
return read(path, limit, privateFile);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
if (e.code === "ENOENT")
|
|
61
|
+
return null;
|
|
62
|
+
throw e;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function atomic(path, text) {
|
|
66
|
+
atomicWriteFileSync(path, text, { mode: 0o600 });
|
|
67
|
+
syncDir(dirname(path));
|
|
68
|
+
}
|
|
69
|
+
function writeNew(path, bytes) {
|
|
70
|
+
if (!existsSync(path)) {
|
|
71
|
+
const fd = openSync(path, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY, 0o600);
|
|
72
|
+
try {
|
|
73
|
+
writeFileSync(fd, bytes);
|
|
74
|
+
fsyncSync(fd);
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
closeSync(fd);
|
|
78
|
+
}
|
|
79
|
+
syncDir(dirname(path));
|
|
80
|
+
}
|
|
81
|
+
if (!read(path, bytes.length, true).bytes.equals(bytes))
|
|
82
|
+
throw new Error("Reconciliation archive read-back failed");
|
|
83
|
+
// A prior attempt may have left a visible file after fsync failed. Retry must
|
|
84
|
+
// establish durability too, before publishing any authority to re-pin.
|
|
85
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
86
|
+
try {
|
|
87
|
+
fsyncSync(fd);
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
closeSync(fd);
|
|
91
|
+
}
|
|
92
|
+
syncDir(dirname(path));
|
|
93
|
+
}
|
|
94
|
+
function scope(input) {
|
|
95
|
+
if (!idPattern.test(input.sessionId) || !idPattern.test(input.archiveId) || input.sessionId === input.archiveId
|
|
96
|
+
|| !/^[^\r\n\0]{1,512}$/.test(input.instance) || !input.model)
|
|
97
|
+
throw new Error("Invalid explicit reconciliation selection");
|
|
98
|
+
}
|
|
99
|
+
function paths(input) {
|
|
100
|
+
const ownerHash = hash(input.instance).slice(0, 32), root = join(input.agendHome, "kiro-reconciliations", ownerHash);
|
|
101
|
+
return { root, active: join(root, "active.json"), identity: join(input.agendHome, "kiro-identity", "instances", ownerHash + ".json"),
|
|
102
|
+
classicClaim: join(input.agendHome, "kiro-identity", "claims", "v1", input.sessionId),
|
|
103
|
+
keepClaim: join(input.agendHome, "kiro-identity", "claims", "v2", input.sessionId),
|
|
104
|
+
archiveClaim: join(input.agendHome, "kiro-identity", "claims", "v2", input.archiveId) };
|
|
105
|
+
}
|
|
106
|
+
function fileNames(input) { return [input.sessionId, input.archiveId].flatMap(id => [id + ".json", id + ".jsonl", id + ".history"]); }
|
|
107
|
+
function limit(name) { return name.endsWith(".jsonl") ? 64 * 1024 * 1024 : name.endsWith(".json") ? 8 * 1024 * 1024 : 16 * 1024 * 1024; }
|
|
108
|
+
function files(input) {
|
|
109
|
+
return Object.fromEntries(fileNames(input).map(name => [name, name.endsWith(".history")
|
|
110
|
+
? optional(join(input.sessionsDir, name), limit(name)) : read(join(input.sessionsDir, name), limit(name))]));
|
|
111
|
+
}
|
|
112
|
+
function state(input) {
|
|
113
|
+
const p = paths(input);
|
|
114
|
+
return { identity: read(p.identity, 1024 * 1024).bytes.toString("utf8"),
|
|
115
|
+
classicClaim: read(p.classicClaim, 1024).bytes.toString("utf8"),
|
|
116
|
+
keepClaim: read(p.keepClaim, 1024).bytes.toString("utf8"), archiveClaim: optional(p.archiveClaim, 1024)?.bytes.toString("utf8") ?? null };
|
|
117
|
+
}
|
|
118
|
+
function peerProof(input) {
|
|
119
|
+
const dir = dirname(paths(input).identity), names = readdirSync(dir);
|
|
120
|
+
if (names.length > 4096)
|
|
121
|
+
throw new Error("Too many Kiro identities to prove ownership");
|
|
122
|
+
for (const name of names) {
|
|
123
|
+
if (!name.endsWith(".json") || name === hash(input.instance).slice(0, 32) + ".json")
|
|
124
|
+
continue;
|
|
125
|
+
const other = JSON.parse(read(join(dir, name), 1024 * 1024).bytes.toString("utf8"));
|
|
126
|
+
if (name.endsWith(".adopting.json")) {
|
|
127
|
+
if (!other || typeof other !== "object" || Array.isArray(other))
|
|
128
|
+
throw new Error("Alternative adoption ownership is not exclusive");
|
|
129
|
+
for (const [key, id] of Object.entries(other)) {
|
|
130
|
+
const tuple = JSON.parse(key);
|
|
131
|
+
if (!Array.isArray(tuple) || tuple.length !== 3 || !["v1", "v2", "v3"].includes(tuple[0]) || typeof tuple[1] !== "string"
|
|
132
|
+
|| tuple[2] !== null && typeof tuple[2] !== "string" || typeof id !== "string" || !idPattern.test(id) || id === input.archiveId)
|
|
133
|
+
throw new Error("Alternative adoption ownership is not exclusive");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (other.version !== 2 || typeof other.instance !== "string" || !other.keys || Object.entries(other.keys).some(([k, r]) => !isConsistentKiroIdentityRecord(k, r))
|
|
138
|
+
|| Object.values(other.keys).some((r) => r.engine === "v2" && (r.id === input.archiveId
|
|
139
|
+
|| r.id === null && kiroCanonicalDirectory(r.workingDirectory) === kiroCanonicalDirectory(input.workingDirectory))))
|
|
140
|
+
throw new Error("Alternative session may belong to another instance");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/** Planning is read-only; only hashes/metadata leave the worker. */
|
|
145
|
+
export function inspectKiroReconciliation(input, classicHash) {
|
|
146
|
+
scope(input);
|
|
147
|
+
if (kiroEngineFloor(input.agendHome, input.instance) !== "v2")
|
|
148
|
+
throw new Error("Only the original V2 carry can be reconciled");
|
|
149
|
+
const candidate = kiroCarryCandidate(input);
|
|
150
|
+
if (!candidate?.repair || candidate.id !== input.sessionId)
|
|
151
|
+
throw new Error("Reconciliation requires the original abandoned carry");
|
|
152
|
+
const snapshots = files(input), keep = JSON.parse(snapshots[input.sessionId + ".json"].bytes.toString("utf8")), other = JSON.parse(snapshots[input.archiveId + ".json"].bytes.toString("utf8"));
|
|
153
|
+
for (const [id, meta] of [[input.sessionId, keep], [input.archiveId, other]]) {
|
|
154
|
+
if (meta.session_id !== id || meta.session_state?.version !== "v1" || meta.session_state?.rts_model_state?.conversation_id !== id
|
|
155
|
+
|| typeof meta.cwd !== "string" || kiroCanonicalDirectory(meta.cwd) !== kiroCanonicalDirectory(input.workingDirectory)
|
|
156
|
+
|| !Number.isFinite(Date.parse(meta.created_at)))
|
|
157
|
+
throw new Error("Reconciliation session/cwd is not proven");
|
|
158
|
+
}
|
|
159
|
+
if (Date.parse(other.created_at) <= Date.parse(keep.created_at) || !snapshots[input.archiveId + ".jsonl"].bytes.length)
|
|
160
|
+
throw new Error("The named alternative is not newer work");
|
|
161
|
+
const before = state(input);
|
|
162
|
+
if (before.classicClaim !== input.instance + "\n" || before.keepClaim !== input.instance + "\nabandoned\n"
|
|
163
|
+
|| before.archiveClaim !== null && before.archiveClaim !== input.instance + "\n")
|
|
164
|
+
throw new Error("Reconciliation claims are not exclusively owned");
|
|
165
|
+
peerProof(input);
|
|
166
|
+
const digest = hash(JSON.stringify({ input, classicHash, before, active: optional(paths(input).active, 4096, true)?.fingerprint ?? null,
|
|
167
|
+
files: Object.fromEntries(Object.entries(snapshots).map(([n, f]) => [n, f?.fingerprint ?? null])) }));
|
|
168
|
+
return { digest };
|
|
169
|
+
}
|
|
170
|
+
function manifestAt(input, receipt) {
|
|
171
|
+
scope(input);
|
|
172
|
+
if (!receiptPattern.test(receipt))
|
|
173
|
+
throw new Error("Invalid reconciliation receipt");
|
|
174
|
+
const root = join(paths(input).root, receipt);
|
|
175
|
+
for (const dir of [join(input.agendHome, "kiro-reconciliations"), paths(input).root, root])
|
|
176
|
+
checkPrivateDir(dir);
|
|
177
|
+
const manifest = JSON.parse(read(join(root, "manifest.json"), 2 * 1024 * 1024, true).bytes.toString("utf8"));
|
|
178
|
+
if (hash(JSON.stringify(manifest)) !== receipt || manifest.version !== 1 || !equal(manifest.input, input)
|
|
179
|
+
|| !equal(Object.keys(manifest.files).sort(), fileNames(input).sort()))
|
|
180
|
+
throw new Error("Reconciliation receipt scope/checksum differs");
|
|
181
|
+
for (const [name, f] of Object.entries(manifest.files))
|
|
182
|
+
if (f) {
|
|
183
|
+
const copy = read(join(root, name), limit(name), true);
|
|
184
|
+
if (copy.fingerprint.hash !== f.hash || copy.fingerprint.size !== f.size)
|
|
185
|
+
throw new Error("Reconciliation archive checksum differs");
|
|
186
|
+
}
|
|
187
|
+
return { manifest, root };
|
|
188
|
+
}
|
|
189
|
+
function journal(input) {
|
|
190
|
+
const file = optional(paths(input).active, 4096, true);
|
|
191
|
+
if (!file)
|
|
192
|
+
return null;
|
|
193
|
+
const value = JSON.parse(file.bytes.toString("utf8"));
|
|
194
|
+
if (!receiptPattern.test(value.receipt) || !["prepared", "selected", "rollback_pending", "rolled_back"].includes(value.phase))
|
|
195
|
+
throw new Error("Reconciliation journal is invalid");
|
|
196
|
+
return value;
|
|
197
|
+
}
|
|
198
|
+
function setPhase(input, receipt, phase) { atomic(paths(input).active, JSON.stringify({ receipt, phase }) + "\n"); }
|
|
199
|
+
export function preserveKiroReconciliation(input, plan, classicHash, actor) {
|
|
200
|
+
if (inspectKiroReconciliation(input, classicHash).digest !== plan.digest || !actor || actor.length > 512)
|
|
201
|
+
throw new Error("Reconciliation confirmation is stale");
|
|
202
|
+
const snapshots = files(input), before = state(input);
|
|
203
|
+
const manifest = { version: 1, input, actor, classicHash, files: Object.fromEntries(Object.entries(snapshots).map(([n, f]) => [n, f?.fingerprint ?? null])),
|
|
204
|
+
identityBefore: before.identity, classicClaimBefore: before.classicClaim, keepClaimBefore: before.keepClaim, archiveClaimBefore: before.archiveClaim };
|
|
205
|
+
const receipt = hash(JSON.stringify(manifest)), base = join(input.agendHome, "kiro-reconciliations");
|
|
206
|
+
privateDir(base);
|
|
207
|
+
privateDir(paths(input).root);
|
|
208
|
+
const root = join(paths(input).root, receipt);
|
|
209
|
+
privateDir(root);
|
|
210
|
+
for (const [name, f] of Object.entries(snapshots))
|
|
211
|
+
if (f)
|
|
212
|
+
writeNew(join(root, name), f.bytes);
|
|
213
|
+
writeNew(join(root, "manifest.json"), Buffer.from(JSON.stringify(manifest)));
|
|
214
|
+
manifestAt(input, receipt);
|
|
215
|
+
if (inspectKiroReconciliation(input, classicHash).digest !== plan.digest)
|
|
216
|
+
throw new Error("Reconciliation sources changed while preserving");
|
|
217
|
+
setPhase(input, receipt, "prepared");
|
|
218
|
+
return receipt;
|
|
219
|
+
}
|
|
220
|
+
/** An active/rolled-back intent is never interpreted as permission for a fresh conversation. */
|
|
221
|
+
export function assertKiroReconciliationLaunch(input) {
|
|
222
|
+
const j = journal({ ...input, archiveId: "unused", model: "unused" });
|
|
223
|
+
if (!j)
|
|
224
|
+
return null;
|
|
225
|
+
if (j.phase === "rollback_pending" || j.phase === "rolled_back")
|
|
226
|
+
throw new Error("Kiro reconciliation was rolled back; explicit confirmation is required before starting");
|
|
227
|
+
if (!receiptPattern.test(j.receipt))
|
|
228
|
+
throw new Error("Invalid reconciliation receipt");
|
|
229
|
+
const path = join(paths({ ...input, archiveId: "unused", model: "unused" }).root, j.receipt, "manifest.json");
|
|
230
|
+
const m = JSON.parse(read(path, 2 * 1024 * 1024, true).bytes.toString("utf8"));
|
|
231
|
+
if (!archivedKiroAlternative({ ...input, sessionId: m.input.sessionId }, m.input.archiveId))
|
|
232
|
+
throw new Error("Reconciliation selection is not proven");
|
|
233
|
+
if (j.phase === "prepared")
|
|
234
|
+
inspectKiroReconciliationRollback(m.input, j.receipt);
|
|
235
|
+
return j.phase === "prepared" ? { input: m.input, classicHash: m.classicHash } : null;
|
|
236
|
+
}
|
|
237
|
+
export function archivedKiroAlternative(input, alternative) {
|
|
238
|
+
const j = journal({ ...input, archiveId: alternative, model: "unused" });
|
|
239
|
+
if (!j)
|
|
240
|
+
return null;
|
|
241
|
+
if (j.phase !== "prepared" && j.phase !== "selected")
|
|
242
|
+
return null;
|
|
243
|
+
// The receipt supplies the model; every storage/root/selection field still has to match this launch.
|
|
244
|
+
if (!receiptPattern.test(j.receipt))
|
|
245
|
+
throw new Error("Invalid reconciliation receipt");
|
|
246
|
+
const path = join(paths({ ...input, archiveId: alternative, model: "unused" }).root, j.receipt, "manifest.json");
|
|
247
|
+
const m = JSON.parse(read(path, 2 * 1024 * 1024, true).bytes.toString("utf8"));
|
|
248
|
+
if (m.input.archiveId !== alternative)
|
|
249
|
+
return null;
|
|
250
|
+
const scoped = { ...input, archiveId: alternative, model: m.input.model };
|
|
251
|
+
const { manifest } = manifestAt(scoped, j.receipt);
|
|
252
|
+
peerProof(scoped);
|
|
253
|
+
const claim = state(scoped).archiveClaim;
|
|
254
|
+
if (claim !== manifest.archiveClaimBefore && claim !== input.instance + "\nabandoned\n")
|
|
255
|
+
throw new Error("Archived alternative ownership changed");
|
|
256
|
+
const unchanged = () => {
|
|
257
|
+
const now = files(scoped);
|
|
258
|
+
const names = j.phase === "prepared" ? fileNames(scoped) : [alternative + ".json", alternative + ".jsonl", alternative + ".history"];
|
|
259
|
+
return names.every(name => equal(now[name]?.fingerprint ?? null, manifest.files[name]));
|
|
260
|
+
};
|
|
261
|
+
if (!unchanged())
|
|
262
|
+
throw new Error("Archived alternative changed; reconciliation held");
|
|
263
|
+
return unchanged;
|
|
264
|
+
}
|
|
265
|
+
export function completeKiroSelection(input, receipt) {
|
|
266
|
+
manifestAt(input, receipt);
|
|
267
|
+
const p = paths(input), current = state(input), value = JSON.parse(current.identity), key = JSON.stringify(["v2", kiroCanonicalDirectory(input.workingDirectory), input.credentialProfile]);
|
|
268
|
+
if (kiroOwnedConversation({ ...input, engine: "v2" }) !== input.sessionId || current.keepClaim !== input.instance + "\n")
|
|
269
|
+
throw new Error("Original selection is no longer owned");
|
|
270
|
+
if (current.archiveClaim !== null && current.archiveClaim !== input.instance + "\n" && current.archiveClaim !== input.instance + "\nabandoned\n")
|
|
271
|
+
throw new Error("Archived alternative acquired another owner");
|
|
272
|
+
value.keys[key].abandoned = [...new Set([...value.keys[key].abandoned, input.archiveId])];
|
|
273
|
+
if (current.archiveClaim === null) {
|
|
274
|
+
const fd = openSync(p.archiveClaim, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY, 0o600);
|
|
275
|
+
try {
|
|
276
|
+
writeFileSync(fd, input.instance + "\nabandoned\n");
|
|
277
|
+
fsyncSync(fd);
|
|
278
|
+
}
|
|
279
|
+
finally {
|
|
280
|
+
closeSync(fd);
|
|
281
|
+
}
|
|
282
|
+
syncDir(dirname(p.archiveClaim));
|
|
283
|
+
}
|
|
284
|
+
else
|
|
285
|
+
atomic(p.archiveClaim, input.instance + "\nabandoned\n");
|
|
286
|
+
atomic(p.identity, JSON.stringify(value) + "\n");
|
|
287
|
+
setPhase(input, receipt, "selected");
|
|
288
|
+
}
|
|
289
|
+
/** Finish a confirmed intent after a worker/process interruption, before publishing a resumed CLI. */
|
|
290
|
+
export function finishKiroReconciliationLaunch(input) {
|
|
291
|
+
const j = journal({ ...input, archiveId: "unused", model: "unused" });
|
|
292
|
+
if (j?.phase !== "prepared")
|
|
293
|
+
return;
|
|
294
|
+
const path = join(paths({ ...input, archiveId: "unused", model: "unused" }).root, j.receipt, "manifest.json");
|
|
295
|
+
const m = JSON.parse(read(path, 2 * 1024 * 1024, true).bytes.toString("utf8"));
|
|
296
|
+
const scoped = { ...input, archiveId: m.input.archiveId, model: m.input.model };
|
|
297
|
+
manifestAt(scoped, j.receipt);
|
|
298
|
+
completeKiroSelection(scoped, j.receipt);
|
|
299
|
+
}
|
|
300
|
+
export function inspectKiroReconciliationRollback(input, receipt) {
|
|
301
|
+
const { manifest } = manifestAt(input, receipt), j = journal(input);
|
|
302
|
+
if (j?.receipt !== receipt || j.phase === "rolled_back")
|
|
303
|
+
throw new Error("Receipt is not the active reconciliation");
|
|
304
|
+
const current = state(input), before = JSON.parse(manifest.identityBefore), now = JSON.parse(current.identity);
|
|
305
|
+
const key = JSON.stringify(["v2", kiroCanonicalDirectory(input.workingDirectory), input.credentialProfile]);
|
|
306
|
+
const old = before.keys[key], live = now.keys[key];
|
|
307
|
+
const selected = { ...old, id: input.sessionId, abandoned: old.abandoned.filter((id) => id !== input.sessionId), agentConfirmed: live?.agentConfirmed };
|
|
308
|
+
const retired = { ...selected, abandoned: [...new Set([...selected.abandoned, input.archiveId])] };
|
|
309
|
+
if (!live || typeof live.agentConfirmed !== "boolean" || ![old, selected, retired].some(expected => equal(live, expected)))
|
|
310
|
+
throw new Error("A newer selection supersedes rollback");
|
|
311
|
+
delete before.keys[key];
|
|
312
|
+
delete now.keys[key];
|
|
313
|
+
if (!equal(before, now) || current.classicClaim !== manifest.classicClaimBefore || ![manifest.keepClaimBefore, input.instance + "\n"].includes(current.keepClaim)
|
|
314
|
+
|| ![manifest.archiveClaimBefore, input.instance + "\nabandoned\n"].includes(current.archiveClaim))
|
|
315
|
+
throw new Error("Identity or claims changed; rollback refused");
|
|
316
|
+
return { digest: hash(JSON.stringify({ receipt, current, phase: j.phase })), rollbackReceipt: receipt };
|
|
317
|
+
}
|
|
318
|
+
export function rollbackKiroSelection(input, plan) {
|
|
319
|
+
const receipt = plan.rollbackReceipt;
|
|
320
|
+
if (inspectKiroReconciliationRollback(input, receipt).digest !== plan.digest)
|
|
321
|
+
throw new Error("Rollback confirmation is stale");
|
|
322
|
+
const { manifest } = manifestAt(input, receipt), p = paths(input);
|
|
323
|
+
setPhase(input, receipt, "rollback_pending");
|
|
324
|
+
atomic(p.keepClaim, manifest.keepClaimBefore);
|
|
325
|
+
if (manifest.archiveClaimBefore === null) {
|
|
326
|
+
if (existsSync(p.archiveClaim))
|
|
327
|
+
unlinkSync(p.archiveClaim);
|
|
328
|
+
syncDir(dirname(p.archiveClaim));
|
|
329
|
+
}
|
|
330
|
+
else
|
|
331
|
+
atomic(p.archiveClaim, manifest.archiveClaimBefore);
|
|
332
|
+
atomic(p.identity, manifest.identityBefore);
|
|
333
|
+
setPhase(input, receipt, "rolled_back");
|
|
334
|
+
return receipt;
|
|
335
|
+
}
|
|
336
|
+
export function beginKiroReconciliationRollback(input, plan) {
|
|
337
|
+
const receipt = plan.rollbackReceipt;
|
|
338
|
+
if (inspectKiroReconciliationRollback(input, receipt).digest !== plan.digest)
|
|
339
|
+
throw new Error("Rollback confirmation is stale");
|
|
340
|
+
const { manifest } = manifestAt(input, receipt);
|
|
341
|
+
setPhase(input, receipt, "rollback_pending");
|
|
342
|
+
return { plan: inspectKiroReconciliationRollback(input, receipt), classicHash: manifest.classicHash };
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=kiro-reconcile-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kiro-reconcile-store.js","sourceRoot":"","sources":["../../src/backend/kiro-reconcile-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { verifyKiroMigrationStore } from "./kiro-migration-verify.js";
|
|
1
2
|
import { parentPort } from "node:worker_threads";
|
|
2
3
|
import { performance } from "node:perf_hooks";
|
|
3
4
|
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
4
5
|
import { join } from "node:path";
|
|
6
|
+
import { prepareKiroCarryForLaunch, planKiroCarryReconciliation, applyKiroCarryReconciliation } from "./kiro-classic-archive.js";
|
|
7
|
+
import { computeKiroClassicLinks } from "./kiro-classic-links.js";
|
|
5
8
|
const CACHE_LIMIT = 4096;
|
|
6
9
|
const CACHE_BYTES = 4 * 1024 * 1024;
|
|
7
10
|
let cacheBytes = 0;
|
|
@@ -81,7 +84,38 @@ function scan({ keys, sessionsDir }, deadlineAt) {
|
|
|
81
84
|
return { kind: "ok", sessions, diagnostics: { reads, hits } };
|
|
82
85
|
}
|
|
83
86
|
parentPort?.on("message", ({ id, input, deadlineAt }) => {
|
|
84
|
-
|
|
87
|
+
let reply;
|
|
88
|
+
try {
|
|
89
|
+
if (input.reconciliation) {
|
|
90
|
+
const checkpoint = () => { if (performance.now() >= deadlineAt)
|
|
91
|
+
throw new Error("Kiro reconciliation timed out"); };
|
|
92
|
+
checkpoint();
|
|
93
|
+
const r = input.reconciliation;
|
|
94
|
+
reply = { kind: "ok", sessions: [], diagnostics: { reads: 0, hits: 0 }, reconciliation: r.plan
|
|
95
|
+
? { receipt: applyKiroCarryReconciliation(r.input, r.plan, r.actor ?? "", checkpoint) }
|
|
96
|
+
: { plan: planKiroCarryReconciliation(r.input, r.rollbackReceipt) } };
|
|
97
|
+
}
|
|
98
|
+
else if (input.classicLinks) {
|
|
99
|
+
reply = { kind: "ok", sessions: [], diagnostics: { reads: 0, hits: 0 },
|
|
100
|
+
classicLinks: computeKiroClassicLinks(input.classicLinks, () => performance.now() >= deadlineAt) };
|
|
101
|
+
}
|
|
102
|
+
else if (input.migration) {
|
|
103
|
+
if (performance.now() >= deadlineAt)
|
|
104
|
+
throw new Error("Kiro verification timed out");
|
|
105
|
+
reply = { kind: "ok", sessions: [], diagnostics: { reads: 0, hits: 0 }, verification: verifyKiroMigrationStore(input.migration) };
|
|
106
|
+
}
|
|
107
|
+
else if (input.carry) {
|
|
108
|
+
const checkpoint = () => { if (performance.now() >= deadlineAt)
|
|
109
|
+
throw new Error("Kiro carry archive timed out"); };
|
|
110
|
+
checkpoint();
|
|
111
|
+
reply = { kind: "ok", sessions: [], diagnostics: { reads: 0, hits: 0 }, carry: prepareKiroCarryForLaunch(input.carry, checkpoint) };
|
|
112
|
+
}
|
|
113
|
+
else
|
|
114
|
+
reply = scan(input, deadlineAt);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
reply = { kind: "unreadable", detail: input.reconciliation && err instanceof SyntaxError ? "Malformed reconciliation data" : err.message };
|
|
118
|
+
}
|
|
85
119
|
parentPort?.postMessage({ id, reply });
|
|
86
120
|
});
|
|
87
121
|
//# sourceMappingURL=kiro-v2-store-worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiro-v2-store-worker.js","sourceRoot":"","sources":["../../src/backend/kiro-v2-store-worker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"kiro-v2-store-worker.js","sourceRoot":"","sources":["../../src/backend/kiro-v2-store-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
import type { KiroMigrationVerificationInput } from "./kiro-migration-verify.js";
|
|
2
|
+
import type { KiroClassicArchiveInput, KiroCarryPreparation } from "./kiro-classic-archive.js";
|
|
3
|
+
import type { KiroClassicLinks, KiroClassicLinksInput } from "./kiro-classic-links.js";
|
|
4
|
+
import type { KiroReconcileInput, KiroReconcilePlan } from "./kiro-reconcile-store.js";
|
|
1
5
|
export declare const KIRO_V2_STORE_BUDGET_MS = 15000;
|
|
6
|
+
/** #2738: a classic store's compaction links read every transcript of the instance's key — its own lane, its own budget. */
|
|
7
|
+
export declare const KIRO_CLASSIC_LINKS_BUDGET_MS = 30000;
|
|
2
8
|
export declare const KIRO_V2_STORE_QUEUE_LIMIT = 64;
|
|
3
9
|
export interface KiroV2StoreInput {
|
|
4
10
|
keys: string[];
|
|
5
11
|
sessionsDir: string;
|
|
12
|
+
carry?: Omit<KiroClassicArchiveInput, "sessionId">;
|
|
13
|
+
migration?: KiroMigrationVerificationInput;
|
|
14
|
+
classicLinks?: KiroClassicLinksInput;
|
|
15
|
+
reconciliation?: {
|
|
16
|
+
input: KiroReconcileInput;
|
|
17
|
+
plan?: KiroReconcilePlan;
|
|
18
|
+
actor?: string;
|
|
19
|
+
rollbackReceipt?: string;
|
|
20
|
+
};
|
|
6
21
|
}
|
|
7
22
|
export type KiroV2StoreReply = {
|
|
8
23
|
kind: "ok";
|
|
@@ -15,6 +30,15 @@ export type KiroV2StoreReply = {
|
|
|
15
30
|
reads: number;
|
|
16
31
|
hits: number;
|
|
17
32
|
};
|
|
33
|
+
carry?: KiroCarryPreparation;
|
|
34
|
+
verification?: {
|
|
35
|
+
forensic: string;
|
|
36
|
+
};
|
|
37
|
+
classicLinks?: KiroClassicLinks;
|
|
38
|
+
reconciliation?: {
|
|
39
|
+
plan?: KiroReconcilePlan;
|
|
40
|
+
receipt?: string;
|
|
41
|
+
};
|
|
18
42
|
} | {
|
|
19
43
|
kind: "unreadable";
|
|
20
44
|
detail: string;
|
|
@@ -39,11 +63,15 @@ declare function createIsolate(): Isolate;
|
|
|
39
63
|
export declare class KiroV2StoreLane {
|
|
40
64
|
private factory;
|
|
41
65
|
private now;
|
|
66
|
+
private budgetMs;
|
|
67
|
+
private label;
|
|
42
68
|
private worker;
|
|
43
69
|
private retiring;
|
|
44
70
|
private nextId;
|
|
45
71
|
private pending;
|
|
46
|
-
constructor(factory?: typeof createIsolate, now?: () => number);
|
|
72
|
+
constructor(factory?: typeof createIsolate, now?: () => number, budgetMs?: number, label?: string);
|
|
73
|
+
/** The detail of a reply that ran out of this lane's budget. */
|
|
74
|
+
get timedOut(): string;
|
|
47
75
|
read(input: KiroV2StoreInput): Promise<KiroV2StoreReply>;
|
|
48
76
|
close(): void;
|
|
49
77
|
private settle;
|
|
@@ -51,4 +79,6 @@ export declare class KiroV2StoreLane {
|
|
|
51
79
|
private pump;
|
|
52
80
|
}
|
|
53
81
|
export declare const sharedKiroV2StoreLane: KiroV2StoreLane;
|
|
82
|
+
/** #2738: apart from the v2 lane, so a long classic read never spends a v2 launch's budget in its queue. */
|
|
83
|
+
export declare const sharedKiroClassicLinksLane: KiroV2StoreLane;
|
|
54
84
|
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Worker } from "node:worker_threads";
|
|
2
2
|
import { performance } from "node:perf_hooks";
|
|
3
3
|
export const KIRO_V2_STORE_BUDGET_MS = 15_000;
|
|
4
|
+
/** #2738: a classic store's compaction links read every transcript of the instance's key — its own lane, its own budget. */
|
|
5
|
+
export const KIRO_CLASSIC_LINKS_BUDGET_MS = 30_000;
|
|
4
6
|
export const KIRO_V2_STORE_QUEUE_LIMIT = 64;
|
|
5
7
|
const unreadable = (detail) => ({ kind: "unreadable", detail });
|
|
6
8
|
function createIsolate() {
|
|
@@ -15,30 +17,36 @@ function createIsolate() {
|
|
|
15
17
|
export class KiroV2StoreLane {
|
|
16
18
|
factory;
|
|
17
19
|
now;
|
|
20
|
+
budgetMs;
|
|
21
|
+
label;
|
|
18
22
|
worker = null;
|
|
19
23
|
retiring = false;
|
|
20
24
|
nextId = 0;
|
|
21
25
|
pending = new Map();
|
|
22
|
-
constructor(factory = createIsolate, now = () => performance.now()) {
|
|
26
|
+
constructor(factory = createIsolate, now = () => performance.now(), budgetMs = KIRO_V2_STORE_BUDGET_MS, label = "v2 session discovery") {
|
|
23
27
|
this.factory = factory;
|
|
24
28
|
this.now = now;
|
|
29
|
+
this.budgetMs = budgetMs;
|
|
30
|
+
this.label = label;
|
|
25
31
|
}
|
|
32
|
+
/** The detail of a reply that ran out of this lane's budget. */
|
|
33
|
+
get timedOut() { return `${this.label} timed out`; }
|
|
26
34
|
read(input) {
|
|
27
35
|
if (this.pending.size >= KIRO_V2_STORE_QUEUE_LIMIT)
|
|
28
|
-
return Promise.resolve(unreadable(
|
|
29
|
-
const id = ++this.nextId, deadlineAt = this.now() +
|
|
36
|
+
return Promise.resolve(unreadable(`${this.label} queue full`));
|
|
37
|
+
const id = ++this.nextId, deadlineAt = this.now() + this.budgetMs;
|
|
30
38
|
const promise = new Promise(resolve => {
|
|
31
39
|
this.pending.set(id, { input, deadlineAt, sent: false, resolve, timer: setTimeout(() => {
|
|
32
|
-
this.settle(id, unreadable(
|
|
40
|
+
this.settle(id, unreadable(this.timedOut));
|
|
33
41
|
this.retire();
|
|
34
|
-
},
|
|
42
|
+
}, this.budgetMs) });
|
|
35
43
|
});
|
|
36
44
|
this.pump();
|
|
37
45
|
return promise;
|
|
38
46
|
}
|
|
39
47
|
close() {
|
|
40
48
|
for (const id of this.pending.keys())
|
|
41
|
-
this.settle(id, unreadable(
|
|
49
|
+
this.settle(id, unreadable(`${this.label} closed`));
|
|
42
50
|
this.retire();
|
|
43
51
|
}
|
|
44
52
|
settle(id, reply) {
|
|
@@ -57,7 +65,7 @@ export class KiroV2StoreLane {
|
|
|
57
65
|
this.retiring = true;
|
|
58
66
|
for (const [id, request] of this.pending)
|
|
59
67
|
if (request.sent)
|
|
60
|
-
this.settle(id, unreadable(
|
|
68
|
+
this.settle(id, unreadable(`${this.label} worker retired`));
|
|
61
69
|
try {
|
|
62
70
|
void this.worker.terminate().catch(() => { });
|
|
63
71
|
}
|
|
@@ -68,7 +76,7 @@ export class KiroV2StoreLane {
|
|
|
68
76
|
return;
|
|
69
77
|
for (const [id, request] of this.pending) {
|
|
70
78
|
if (this.now() >= request.deadlineAt)
|
|
71
|
-
this.settle(id, unreadable(
|
|
79
|
+
this.settle(id, unreadable(this.timedOut));
|
|
72
80
|
}
|
|
73
81
|
if (!this.pending.size)
|
|
74
82
|
return;
|
|
@@ -83,7 +91,7 @@ export class KiroV2StoreLane {
|
|
|
83
91
|
if (!request)
|
|
84
92
|
return;
|
|
85
93
|
if (this.now() >= request.deadlineAt) {
|
|
86
|
-
this.settle(message.id, unreadable(
|
|
94
|
+
this.settle(message.id, unreadable(this.timedOut));
|
|
87
95
|
this.retire();
|
|
88
96
|
}
|
|
89
97
|
else
|
|
@@ -98,13 +106,13 @@ export class KiroV2StoreLane {
|
|
|
98
106
|
this.retiring = false;
|
|
99
107
|
for (const [id, request] of this.pending)
|
|
100
108
|
if (request.sent)
|
|
101
|
-
this.settle(id, unreadable(
|
|
109
|
+
this.settle(id, unreadable(`${this.label} worker exited`));
|
|
102
110
|
this.pump();
|
|
103
111
|
});
|
|
104
112
|
}
|
|
105
113
|
catch {
|
|
106
114
|
for (const id of this.pending.keys())
|
|
107
|
-
this.settle(id, unreadable(
|
|
115
|
+
this.settle(id, unreadable(`cannot start ${this.label} worker`));
|
|
108
116
|
return;
|
|
109
117
|
}
|
|
110
118
|
}
|
|
@@ -112,7 +120,7 @@ export class KiroV2StoreLane {
|
|
|
112
120
|
if (request.sent)
|
|
113
121
|
continue;
|
|
114
122
|
if (this.now() >= request.deadlineAt) {
|
|
115
|
-
this.settle(id, unreadable(
|
|
123
|
+
this.settle(id, unreadable(this.timedOut));
|
|
116
124
|
continue;
|
|
117
125
|
}
|
|
118
126
|
try {
|
|
@@ -128,4 +136,6 @@ export class KiroV2StoreLane {
|
|
|
128
136
|
}
|
|
129
137
|
}
|
|
130
138
|
export const sharedKiroV2StoreLane = new KiroV2StoreLane();
|
|
139
|
+
/** #2738: apart from the v2 lane, so a long classic read never spends a v2 launch's budget in its queue. */
|
|
140
|
+
export const sharedKiroClassicLinksLane = new KiroV2StoreLane(createIsolate, () => performance.now(), KIRO_CLASSIC_LINKS_BUDGET_MS, "classic compaction links");
|
|
131
141
|
//# sourceMappingURL=kiro-v2-store.js.map
|