@songsid/agend 2.3.4-beta.1 → 2.3.4-beta.10
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/THIRD_PARTY_NOTICES.md +37 -0
- package/dist/agend-home.d.ts +13 -0
- package/dist/agend-home.js +42 -0
- package/dist/agend-home.js.map +1 -1
- package/dist/agent-cli-instructions.md +1 -1
- package/dist/agent-credentials.d.ts +24 -0
- package/dist/agent-credentials.js +66 -0
- package/dist/agent-credentials.js.map +1 -0
- package/dist/agent-endpoint.d.ts +3 -1
- package/dist/agent-endpoint.js +13 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/auth-api.js +10 -2
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/session-authorizations.d.ts +28 -4
- package/dist/authority/session-authorizations.js +63 -17
- package/dist/authority/session-authorizations.js.map +1 -1
- package/dist/backend/antigravity.js +3 -1
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +3 -0
- package/dist/backend/claude-code.js +89 -4
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-footer-hints.d.ts +4 -0
- package/dist/backend/codex-footer-hints.js +27 -0
- package/dist/backend/codex-footer-hints.js.map +1 -0
- package/dist/backend/codex-session-lookup.d.ts +35 -0
- package/dist/backend/codex-session-lookup.js +93 -0
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex.d.ts +27 -0
- package/dist/backend/codex.js +124 -23
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-identity.d.ts +2 -0
- package/dist/backend/kiro-identity.js +13 -6
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro.d.ts +3 -0
- package/dist/backend/kiro.js +68 -5
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +5 -3
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +6 -1
- package/dist/backend/types.js +3 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-availability.d.ts +6 -0
- package/dist/backend-availability.js +13 -5
- package/dist/backend-availability.js.map +1 -1
- package/dist/cache-ledger.d.ts +85 -0
- package/dist/cache-ledger.js +236 -1
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-service.d.ts +5 -0
- package/dist/cache-service.js +16 -4
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.js +27 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +51 -0
- package/dist/channel/adapters/telegram.js +238 -18
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/inbox-temp-name.d.ts +9 -0
- package/dist/channel/inbox-temp-name.js +13 -0
- package/dist/channel/inbox-temp-name.js.map +1 -0
- package/dist/channel/mcp-tools.js +3 -3
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/types.d.ts +2 -0
- package/dist/chat-log-ids.d.ts +48 -0
- package/dist/chat-log-ids.js +182 -0
- package/dist/chat-log-ids.js.map +1 -0
- package/dist/classic-channel-manager.d.ts +8 -1
- package/dist/classic-channel-manager.js +24 -2
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +4 -6
- package/dist/cli.js.map +1 -1
- package/dist/cross-instance-notice.d.ts +10 -0
- package/dist/cross-instance-notice.js +67 -5
- package/dist/cross-instance-notice.js.map +1 -1
- package/dist/daemon.d.ts +52 -0
- package/dist/daemon.js +530 -34
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +23 -1
- package/dist/delivery-consumed-watch.js +30 -3
- package/dist/delivery-consumed-watch.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +7 -0
- package/dist/delivery-reconciliation.js +9 -1
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/dialog-screen-text.d.ts +16 -0
- package/dist/dialog-screen-text.js +51 -0
- package/dist/dialog-screen-text.js.map +1 -0
- package/dist/export-import.d.ts +7 -0
- package/dist/export-import.js +44 -10
- package/dist/export-import.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -0
- package/dist/fleet-manager.d.ts +147 -11
- package/dist/fleet-manager.js +747 -118
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-yaml-patch.d.ts +3 -0
- package/dist/fleet-yaml-patch.js +103 -0
- package/dist/fleet-yaml-patch.js.map +1 -0
- package/dist/general-knowledge/skills/concepts/SKILL.md +393 -0
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
- package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +3 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +41 -4
- package/dist/general-knowledge/skills/model-discovery/SKILL.md +2 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +10 -4
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
- package/dist/install-stream.d.ts +53 -0
- package/dist/install-stream.js +134 -0
- package/dist/install-stream.js.map +1 -0
- package/dist/instance-lifecycle.d.ts +20 -2
- package/dist/instance-lifecycle.js +80 -12
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instance-topic-delete.d.ts +77 -0
- package/dist/instance-topic-delete.js +123 -0
- package/dist/instance-topic-delete.js.map +1 -0
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +1 -1
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-engine-status.d.ts +11 -0
- package/dist/kiro-engine-status.js +6 -0
- package/dist/kiro-engine-status.js.map +1 -1
- package/dist/kiro-resume-summary.d.ts +37 -0
- package/dist/kiro-resume-summary.js +85 -0
- package/dist/kiro-resume-summary.js.map +1 -0
- package/dist/locale.js +82 -6
- package/dist/locale.js.map +1 -1
- package/dist/log-service.d.ts +30 -0
- package/dist/log-service.js +36 -3
- package/dist/log-service.js.map +1 -1
- package/dist/log-steps.d.ts +4 -3
- package/dist/log-steps.js +32 -7
- package/dist/log-steps.js.map +1 -1
- package/dist/logger.d.ts +12 -0
- package/dist/logger.js +43 -1
- package/dist/logger.js.map +1 -1
- package/dist/login-controller.js +9 -1
- package/dist/login-controller.js.map +1 -1
- package/dist/login-flows.d.ts +2 -0
- package/dist/login-flows.js +5 -2
- package/dist/login-flows.js.map +1 -1
- package/dist/login-manager.d.ts +6 -0
- package/dist/login-manager.js +10 -1
- package/dist/login-manager.js.map +1 -1
- package/dist/missed-offline.d.ts +25 -0
- package/dist/missed-offline.js +79 -0
- package/dist/missed-offline.js.map +1 -0
- package/dist/needs-you-hub.d.ts +6 -1
- package/dist/needs-you-hub.js +31 -8
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +22 -2
- package/dist/needs-you.js +17 -3
- package/dist/needs-you.js.map +1 -1
- package/dist/office-share-page.d.ts +1 -1
- package/dist/office-share-page.js +6 -2
- package/dist/office-share-page.js.map +1 -1
- package/dist/outbound-handlers.js +59 -3
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +1 -0
- package/dist/outbound-schemas.js +9 -3
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/package-preimage.js +27 -2
- package/dist/package-preimage.js.map +1 -1
- package/dist/queued-handoffs.d.ts +33 -0
- package/dist/queued-handoffs.js +75 -0
- package/dist/queued-handoffs.js.map +1 -0
- package/dist/reply-buttons-controller.js +10 -0
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/scheduler/db.d.ts +2 -1
- package/dist/scheduler/db.js +23 -9
- package/dist/scheduler/db.js.map +1 -1
- package/dist/selection-card.d.ts +2 -3
- package/dist/selection-card.js +99 -26
- package/dist/selection-card.js.map +1 -1
- package/dist/settings-api.d.ts +13 -0
- package/dist/settings-api.js +12 -1
- package/dist/settings-api.js.map +1 -1
- package/dist/stall-reporter.d.ts +21 -0
- package/dist/stall-reporter.js +82 -0
- package/dist/stall-reporter.js.map +1 -0
- package/dist/tmux-control.d.ts +2 -2
- package/dist/tmux-control.js +4 -2
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-exec-helper.d.ts +6 -3
- package/dist/tmux-exec-helper.js +115 -53
- package/dist/tmux-exec-helper.js.map +1 -1
- package/dist/tmux-manager.d.ts +6 -0
- package/dist/tmux-manager.js +17 -0
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-permissions.d.ts +5 -2
- package/dist/tool-permissions.js +6 -5
- package/dist/tool-permissions.js.map +1 -1
- package/dist/tool-progress.d.ts +2 -0
- package/dist/tool-progress.js +19 -3
- package/dist/tool-progress.js.map +1 -1
- package/dist/topic-commands.js +4 -0
- package/dist/topic-commands.js.map +1 -1
- package/dist/tunnel/cloudflared-install.d.ts +4 -0
- package/dist/tunnel/cloudflared-install.js +20 -1
- package/dist/tunnel/cloudflared-install.js.map +1 -1
- package/dist/tunnel/cloudflared.d.ts +8 -1
- package/dist/tunnel/cloudflared.js +34 -6
- package/dist/tunnel/cloudflared.js.map +1 -1
- package/dist/tunnel/lease.d.ts +3 -3
- package/dist/tunnel/lease.js +23 -19
- package/dist/tunnel/lease.js.map +1 -1
- package/dist/tunnel/manager.js +6 -7
- package/dist/tunnel/manager.js.map +1 -1
- package/dist/ui/chat-store.js +20 -3
- package/dist/ui/chat-strings.js +4 -4
- package/dist/ui/chat-thread.js +52 -10
- package/dist/ui/fleet-canvas.js +4 -3
- package/dist/ui/fleet-office-model.js +55 -22
- package/dist/ui/fleet-office-overview.js +6 -38
- package/dist/ui/fleet-office-pack.js +4 -3
- package/dist/ui/fleet-office-skin.js +114 -21
- package/dist/ui/fleet-office-store.js +5 -0
- package/dist/ui/fleet-office-zones.js +2 -2
- package/dist/ui/fleet-office.js +41 -9
- package/dist/ui/fleet-usage.js +90 -27
- package/dist/ui/panel-chat.js +2 -0
- package/dist/ui/panel-log.js +7 -1
- package/dist/ui/panel-needs.js +17 -8
- package/dist/ui/settings-strings.js +2 -2
- package/dist/ui/shared/app-i18n.js +4 -4
- package/dist/ui/shared/app-needs.js +1 -1
- package/dist/ui/shared/app-shell.js +4 -2
- package/dist/ui/shared/app-stream.js +26 -0
- package/dist/ui/shared/app.css +51 -3
- package/dist/ui/shared/office/guild.png +0 -0
- package/dist/ui/shared/office/school.png +0 -0
- package/dist/ui/shared/panel-view.js +339 -17
- package/dist/ui/shared/usage-dialog.js +18 -1
- package/dist/ui/shared/view-history.css +17 -0
- package/dist/ui/shared/view-history.js +438 -0
- package/dist/ui/shared/view-strings.js +42 -0
- package/dist/unattended-install.d.ts +6 -0
- package/dist/unattended-install.js +79 -0
- package/dist/unattended-install.js.map +1 -0
- package/dist/usage/capacity.d.ts +69 -0
- package/dist/usage/capacity.js +119 -0
- package/dist/usage/capacity.js.map +1 -0
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +3 -0
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/profile-timeline.d.ts +16 -0
- package/dist/usage/profile-timeline.js +58 -0
- package/dist/usage/profile-timeline.js.map +1 -0
- package/dist/usage/quota-history.d.ts +43 -0
- package/dist/usage/quota-history.js +168 -0
- package/dist/usage/quota-history.js.map +1 -0
- package/dist/usage/usage-api.d.ts +31 -0
- package/dist/usage/usage-api.js +80 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/usage-report.d.ts +25 -1
- package/dist/usage-report.js +55 -4
- package/dist/usage-report.js.map +1 -1
- package/dist/usage-rollup.d.ts +4 -1
- package/dist/usage-rollup.js +12 -3
- package/dist/usage-rollup.js.map +1 -1
- package/dist/view-api.d.ts +31 -0
- package/dist/view-api.js +186 -41
- package/dist/view-api.js.map +1 -1
- package/dist/view-history.d.ts +84 -0
- package/dist/view-history.js +116 -0
- package/dist/view-history.js.map +1 -0
- package/dist/web-api.d.ts +6 -0
- package/dist/web-api.js +15 -4
- package/dist/web-api.js.map +1 -1
- package/dist/web-chat-history.d.ts +20 -0
- package/dist/web-chat-history.js +21 -0
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-guest-access.js +5 -1
- package/dist/web-guest-access.js.map +1 -1
- package/dist/web-login.d.ts +4 -3
- package/dist/web-login.js +23 -14
- package/dist/web-login.js.map +1 -1
- package/dist/web-office-pack-tools.d.ts +1 -1
- package/dist/web-office-pack-tools.js +1 -1
- package/dist/web-office-pack-tools.js.map +1 -1
- package/dist/web-session-authorization.d.ts +13 -2
- package/dist/web-session-authorization.js +10 -3
- package/dist/web-session-authorization.js.map +1 -1
- package/dist/web-session.d.ts +5 -0
- package/dist/web-session.js +20 -8
- package/dist/web-session.js.map +1 -1
- package/launcher/agend-install.cjs +16 -2
- package/launcher/private-home.cjs +1 -1
- package/package.json +1 -1
|
@@ -23,6 +23,16 @@ export declare function crossInstanceVisibility(fleet: Pick<FleetConfig, "defaul
|
|
|
23
23
|
* instance or an external session with no setting of its own follows the default.
|
|
24
24
|
*/
|
|
25
25
|
export declare function xmsgVisibility(fleet: Pick<FleetConfig, "defaults" | "instances"> | null | undefined): XmsgVisibility;
|
|
26
|
+
/**
|
|
27
|
+
* Strip internal message-reference ids from a human-facing notice. Agent payloads must not go through this:
|
|
28
|
+
* hmsg-/xmsg- ids and forwards lists are how agents verify receipts.
|
|
29
|
+
*
|
|
30
|
+
* Cleanup only touches gaps left by a removed reference. Ordinary text, indentation, `decide()`-style
|
|
31
|
+
* empty parens, doubled spaces in code, and URL bytes (including `,,`) stay as they were. A space
|
|
32
|
+
* beside a URL is kept when the stripped id sat between them; true start/end of the notice still
|
|
33
|
+
* drop the leftover separator.
|
|
34
|
+
*/
|
|
35
|
+
export declare function hideInternalMessageIds(text: string): string;
|
|
26
36
|
export interface CrossInstanceNoticeInput {
|
|
27
37
|
/** "sender → target", built by the caller (#1301 owns its wording). */
|
|
28
38
|
label: string;
|
|
@@ -24,6 +24,64 @@ export function xmsgVisibility(fleet) {
|
|
|
24
24
|
return fleet?.defaults?.cross_instance_visibility === "hidden" ? { among: names.filter(n => !off(n)) } : { hidden: names.filter(off) };
|
|
25
25
|
}
|
|
26
26
|
const SUMMARY_PREVIEW_CHARS = 100;
|
|
27
|
+
const URL_SPLIT = /(https?:\/\/[^\s]+)/gi;
|
|
28
|
+
const FORWARDS_LIST = /\bforwards:\s*\[[^\]]*\]/gi;
|
|
29
|
+
const VERIFICATION_PAREN = /\(\s*verification_id\b[^)]*\)|(\s*verification_id\b[^)]*)/gi;
|
|
30
|
+
const LABELED_MSG_ID = /\b(?:verification_id|message_id)\s*:?\s*(?:hmsg|xmsg)-[A-Za-z0-9-]+/gi;
|
|
31
|
+
const BARE_MSG_ID = /\b(?:hmsg|xmsg)-[A-Za-z0-9-]+/g;
|
|
32
|
+
/** Marks a removed reference. URL bytes are parked as `\uE001{i}\uE001` so a gap next to a URL stays internal. */
|
|
33
|
+
const GAP = "\uE000";
|
|
34
|
+
const URL_PH = "\uE001";
|
|
35
|
+
const GAP_ONLY_LINE = /^[ \t]*\uE000+[ \t]*$/;
|
|
36
|
+
/**
|
|
37
|
+
* Strip internal message-reference ids from a human-facing notice. Agent payloads must not go through this:
|
|
38
|
+
* hmsg-/xmsg- ids and forwards lists are how agents verify receipts.
|
|
39
|
+
*
|
|
40
|
+
* Cleanup only touches gaps left by a removed reference. Ordinary text, indentation, `decide()`-style
|
|
41
|
+
* empty parens, doubled spaces in code, and URL bytes (including `,,`) stay as they were. A space
|
|
42
|
+
* beside a URL is kept when the stripped id sat between them; true start/end of the notice still
|
|
43
|
+
* drop the leftover separator.
|
|
44
|
+
*/
|
|
45
|
+
export function hideInternalMessageIds(text) {
|
|
46
|
+
const urls = [];
|
|
47
|
+
URL_SPLIT.lastIndex = 0;
|
|
48
|
+
const masked = text.replace(URL_SPLIT, (url) => `${URL_PH}${urls.push(url) - 1}${URL_PH}`);
|
|
49
|
+
const cleaned = hideIdsInText(masked);
|
|
50
|
+
return urls.length === 0 ? cleaned : cleaned.replace(/\uE001(\d+)\uE001/g, (_, i) => urls[Number(i)] ?? "");
|
|
51
|
+
}
|
|
52
|
+
function hideIdsInText(text) {
|
|
53
|
+
const gapped = text
|
|
54
|
+
.replace(FORWARDS_LIST, GAP)
|
|
55
|
+
.replace(VERIFICATION_PAREN, GAP)
|
|
56
|
+
.replace(LABELED_MSG_ID, GAP)
|
|
57
|
+
.replace(BARE_MSG_ID, GAP);
|
|
58
|
+
return gapped.includes(GAP) ? tidyRemovedGaps(gapped) : text;
|
|
59
|
+
}
|
|
60
|
+
function tidyRemovedGaps(text) {
|
|
61
|
+
let s = text;
|
|
62
|
+
for (let i = 0; i < 8; i++) {
|
|
63
|
+
const next = s
|
|
64
|
+
.replace(/\((?=[^()]*\uE000)[\s\uE000]*\)|((?=[^()]*\uE000)[\s\uE000]*)/g, GAP)
|
|
65
|
+
.replace(/[,,][ \t]*\uE000+[ \t]*(?=[,,。..!?!?)\]]|$)/g, GAP);
|
|
66
|
+
if (next === s)
|
|
67
|
+
break;
|
|
68
|
+
s = next;
|
|
69
|
+
}
|
|
70
|
+
s = s.split("\n").filter(line => !GAP_ONLY_LINE.test(line)).join("\n");
|
|
71
|
+
return s.replace(/[ \t]*\uE000+(?:[ \t]*\uE000+)*[ \t]*/g, (match, offset, whole) => {
|
|
72
|
+
const left = offset > 0 ? whole[offset - 1] : "";
|
|
73
|
+
const right = whole[offset + match.length] ?? "";
|
|
74
|
+
if (!left || !right)
|
|
75
|
+
return "";
|
|
76
|
+
if (/[。..!?!?,,;;)\]]/.test(right) || /[。..!?!?]/.test(left))
|
|
77
|
+
return "";
|
|
78
|
+
if (/[ \t]/.test(match))
|
|
79
|
+
return " ";
|
|
80
|
+
if (/[A-Za-z0-9]/.test(left) && /[A-Za-z0-9]/.test(right))
|
|
81
|
+
return " ";
|
|
82
|
+
return "";
|
|
83
|
+
});
|
|
84
|
+
}
|
|
27
85
|
/** One line: the label, then the sender's task summary or the start of the message. */
|
|
28
86
|
function summaryLine(label, message, taskSummary) {
|
|
29
87
|
const oneLine = (text) => text.replace(/\s+/g, " ").trim();
|
|
@@ -39,19 +97,23 @@ export function targetTopicNotice(mode, input) {
|
|
|
39
97
|
return null;
|
|
40
98
|
if (input.requestKind === "report" || input.requestKind === "update")
|
|
41
99
|
return null;
|
|
100
|
+
const message = hideInternalMessageIds(input.message);
|
|
101
|
+
const taskSummary = input.taskSummary === undefined ? undefined : hideInternalMessageIds(input.taskSummary);
|
|
42
102
|
if (mode === "summary")
|
|
43
|
-
return summaryLine(input.label,
|
|
103
|
+
return summaryLine(input.label, message, taskSummary);
|
|
44
104
|
return input.requestKind === "task" || input.requestKind === "query"
|
|
45
|
-
? `${input.label}:\n${
|
|
46
|
-
: `${input.label}: ${
|
|
105
|
+
? `${input.label}:\n${message}`
|
|
106
|
+
: `${input.label}: ${taskSummary ?? truncatePreview(message, SUMMARY_PREVIEW_CHARS)}`;
|
|
47
107
|
}
|
|
48
108
|
/** The text to post in the sender's topic, or null for none. `full` shows everything the agent sent. */
|
|
49
109
|
export function senderTopicNotice(mode, input) {
|
|
50
110
|
if (mode === "hidden")
|
|
51
111
|
return null;
|
|
112
|
+
const message = hideInternalMessageIds(input.message);
|
|
113
|
+
const taskSummary = input.taskSummary === undefined ? undefined : hideInternalMessageIds(input.taskSummary);
|
|
52
114
|
if (mode === "summary")
|
|
53
|
-
return summaryLine(input.label,
|
|
54
|
-
return `${input.label}:\n${
|
|
115
|
+
return summaryLine(input.label, message, taskSummary);
|
|
116
|
+
return `${input.label}:\n${message}`;
|
|
55
117
|
}
|
|
56
118
|
/**
|
|
57
119
|
* `/visibility [full|summary|hidden]` on Telegram and Discord, after the caller passed the fleet-admin gate: with a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-instance-notice.js","sourceRoot":"","sources":["../src/cross-instance-notice.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAGhC,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAEtF,MAAM,CAAC,MAAM,iCAAiC,GAA4B,MAAM,CAAC;AAEjF,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,+BAAqD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7G,CAAC;AAED,8GAA8G;AAC9G,MAAM,UAAU,uBAAuB,CAAC,KAAqE,EAAE,YAAoB;IACjI,MAAM,GAAG,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,CAAC;IACxE,IAAI,yBAAyB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/C,MAAM,YAAY,GAAG,KAAK,EAAE,QAAQ,EAAE,yBAAyB,CAAC;IAChE,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iCAAiC,CAAC;AACpG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqE;IAClG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,QAAQ,CAAC;IAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,yBAAyB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACzI,CAAC;AAED,MAAM,qBAAqB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"cross-instance-notice.js","sourceRoot":"","sources":["../src/cross-instance-notice.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export declare const HANDOFF_RECHECK_MS = 1000;
|
|
|
38
38
|
export declare const WAIT_STOP_POLL_MS = 250;
|
|
39
39
|
/** #2770: human messages a cancel dropped are told in one notice, this long after the last of them. */
|
|
40
40
|
export declare const CANCELLED_HUMANS_NOTICE_MS = 1000;
|
|
41
|
+
/** #3030: a queued hand-off's watch outlives a long turn (the record outlives the watch in any case). */
|
|
42
|
+
export declare const QUEUED_HANDOFF_WATCH_LIFETIME_MS: number;
|
|
41
43
|
/**
|
|
42
44
|
* An instance publishing more than this many execution-state edges inside the
|
|
43
45
|
* window is flapping; its edges stop being logged one by one (#1116). One
|
|
@@ -806,6 +808,12 @@ export declare class Daemon extends EventEmitter {
|
|
|
806
808
|
private pendingWhatsNew;
|
|
807
809
|
private pasteQueueDepth;
|
|
808
810
|
/** #2770: a person's messages a cancel dropped before they reached the CLI, told together (noteCancelledHuman). */
|
|
811
|
+
/** #3030: people's messages a CLI never took (or that a restart left unverifiable), told once per batch. */
|
|
812
|
+
private unsettledHandoffs;
|
|
813
|
+
private unsettledHandoffsTimer;
|
|
814
|
+
/** #3030: since when (monotonic) the CLI has been idle without a break; null while it is not. */
|
|
815
|
+
private instanceIdleSinceMono;
|
|
816
|
+
private queuedHandoffStore;
|
|
809
817
|
private cancelledHumans;
|
|
810
818
|
private cancelledHumansTimer;
|
|
811
819
|
private firstDeliveryDelay;
|
|
@@ -1011,6 +1019,9 @@ export declare class Daemon extends EventEmitter {
|
|
|
1011
1019
|
constructor(name: string, config: InstanceConfig, instanceDir: string, topicMode?: boolean, backend?: CliBackend | undefined, controlClient?: TmuxControlClient | undefined, rootLogger?: Logger, runtimeIdentity?: FleetInstructionsParams["runtimeIdentity"], spawnGate?: SpawnGate | undefined, stormWindow?: StormWindow | undefined,
|
|
1012
1020
|
/** Fleet-level "is this CLI's backend down?" memory — see backend-outage.ts. */
|
|
1013
1021
|
backendOutage?: BackendOutageView | undefined);
|
|
1022
|
+
/** Register each issued HTTP credential with the same-process lifecycle owner. */
|
|
1023
|
+
private agentCredentialIssuer?;
|
|
1024
|
+
setAgentCredentialIssuer(issue: (token: string) => void): void;
|
|
1014
1025
|
/** FleetManager and this daemon share a process, so durable begin/ACK is a direct synchronous store call. */
|
|
1015
1026
|
setDeliveryOutboxPort(port: DaemonDeliveryPort | undefined): void;
|
|
1016
1027
|
/** The fleet's other same-backend instances' working directories, read at spawn (#984). */
|
|
@@ -1036,6 +1047,38 @@ export declare class Daemon extends EventEmitter {
|
|
|
1036
1047
|
* watch belongs to this CLI: a stop, pause or respawn ends it (restart reconciliation owns the row after that).
|
|
1037
1048
|
*/
|
|
1038
1049
|
private startConsumedWatch;
|
|
1050
|
+
private handoffStore;
|
|
1051
|
+
/** #3030: the CLI that holds a queued hand-off; a record is settled only by a later one. */
|
|
1052
|
+
private handoffHolder;
|
|
1053
|
+
/**
|
|
1054
|
+
* #3030: before the paste. A hand-off into a busy Claude Code / Codex queue gets its record — the transcript
|
|
1055
|
+
* checkpoint before the paste, the unique leading marker and what a redelivery needs — or, for a redelivery written
|
|
1056
|
+
* as an ordinary idle submission, its record moves its checkpoint here, so a crash right after this paste is still
|
|
1057
|
+
* judged from the transcript that will show it. A write that did not keep a record runs as before.
|
|
1058
|
+
*/
|
|
1059
|
+
private recordQueuedHandoff;
|
|
1060
|
+
/**
|
|
1061
|
+
* #3030: after pushChannelMessage's write. A hand-off on record whose paste went out is watched (✅ when a turn
|
|
1062
|
+
* takes it); one that was never written goes. A redelivery that ended as an ordinary submission is done; one that a
|
|
1063
|
+
* cancel dropped goes too (a cancel is the person's); one stopped before its write stays for the next CLI.
|
|
1064
|
+
*/
|
|
1065
|
+
private afterTrackedWrite;
|
|
1066
|
+
private redeliveryStillOurs;
|
|
1067
|
+
private dropQueuedHandoff;
|
|
1068
|
+
/**
|
|
1069
|
+
* #3030: the hand-off's CLI is the current one: watch its transcript for the turn that takes it (✅ then), and for an
|
|
1070
|
+
* idle CLI that never did (reported). A stop ends the watch; the record stays for the next CLI to settle.
|
|
1071
|
+
*/
|
|
1072
|
+
private watchQueuedHandoff;
|
|
1073
|
+
/** #3030: a record's end — taken (✅), or never taken / not judgeable (❌, told once per batch). */
|
|
1074
|
+
private settleQueuedHandoff;
|
|
1075
|
+
/**
|
|
1076
|
+
* #3030: right after a CLI came up — the records left by CLIs that are gone. Their queue went with them, so each is
|
|
1077
|
+
* judged by its own transcript from its checkpoint: taken there (✅, nothing pasted); proven not taken (the whole
|
|
1078
|
+
* delta read, the marker absent or only enqueued) → redelivered once, with the same marker, through the ordinary
|
|
1079
|
+
* queue; anything that cannot be judged → never pasted, reported. Ownership is evidence: never pasted twice.
|
|
1080
|
+
*/
|
|
1081
|
+
private reconcileQueuedHandoffs;
|
|
1039
1082
|
private finishDurableSubmission;
|
|
1040
1083
|
/**
|
|
1041
1084
|
* Finish a delivery that only the output edge vouched for, by the delivery's own marker in the CLI's transcript (#758).
|
|
@@ -1884,6 +1927,7 @@ export declare class Daemon extends EventEmitter {
|
|
|
1884
1927
|
*/
|
|
1885
1928
|
/** #2897: the notice out for a dialog is out of date (its `owner` ended): the fleet takes it back. */
|
|
1886
1929
|
private retireParkedNotice;
|
|
1930
|
+
/** `pane`: the capture the caller already holds — M-2269 keeps the dialog's text from it for the Log (no new capture). */
|
|
1887
1931
|
private trackDialogParked;
|
|
1888
1932
|
/**
|
|
1889
1933
|
* Bottom-anchored readiness for TUIs that drop Enter while busy (see
|
|
@@ -2135,6 +2179,14 @@ export declare class Daemon extends EventEmitter {
|
|
|
2135
2179
|
* an invariant maintained by comments.
|
|
2136
2180
|
*/
|
|
2137
2181
|
private sendDeliveryEnter;
|
|
2182
|
+
/**
|
|
2183
|
+
* M-2267 (hmsg-b8a170c0): is the pane in a tmux mode (a person left it in copy-mode)? Logged once per stretch. Unknown
|
|
2184
|
+
* (unreadable) is not a mode: the delivery's own reads decide then, as before.
|
|
2185
|
+
*/
|
|
2186
|
+
private paneModeSince;
|
|
2187
|
+
private paneInTmuxMode;
|
|
2188
|
+
/** M-2267: wait while the pane is in a tmux mode, until `deadline` (PANE_MODE_ENTER_WAIT_MS) — "clear", "stale" (fenced), "held". */
|
|
2189
|
+
private waitWhilePaneInMode;
|
|
2138
2190
|
/** Write half only: callers must finish the availability wait before any final recovery ownership proof. */
|
|
2139
2191
|
private sendDeliveryEnterAfterAvailability;
|
|
2140
2192
|
private writeMessageToPane;
|