@songsid/agend 2.3.2-beta.3 → 2.3.2-beta.5
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 +40 -0
- package/dist/agent-cli.js +21 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +5 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/antigravity-usage-scan.d.ts +58 -0
- package/dist/antigravity-usage-scan.js +257 -0
- package/dist/antigravity-usage-scan.js.map +1 -0
- package/dist/antigravity-usage-worker.d.ts +1 -0
- package/dist/antigravity-usage-worker.js +10 -0
- package/dist/antigravity-usage-worker.js.map +1 -0
- package/dist/auth-api.js +2 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/kiro-identity.d.ts +45 -0
- package/dist/backend/kiro-identity.js +74 -0
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro.d.ts +36 -1
- package/dist/backend/kiro.js +131 -6
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +6 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-signin-guide.d.ts +1 -0
- package/dist/backend-signin-guide.js +9 -0
- package/dist/backend-signin-guide.js.map +1 -0
- package/dist/backend-signin-pending.d.ts +10 -0
- package/dist/backend-signin-pending.js +44 -0
- package/dist/backend-signin-pending.js.map +1 -0
- package/dist/browser-backend-signins.d.ts +56 -0
- package/dist/browser-backend-signins.js +189 -0
- package/dist/browser-backend-signins.js.map +1 -0
- package/dist/cache-ledger.d.ts +38 -2
- package/dist/cache-ledger.js +133 -8
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-prices.d.ts +2 -1
- package/dist/cache-prices.js +5 -2
- package/dist/cache-prices.js.map +1 -1
- package/dist/cache-service.d.ts +68 -0
- package/dist/cache-service.js +355 -13
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.js +7 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/mcp-tools.js +7 -1
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +5 -0
- package/dist/classic-channel-manager.js +14 -1
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +21 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +22 -5
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +19 -0
- package/dist/config.js +31 -1
- package/dist/config.js.map +1 -1
- package/dist/cpu-quota.d.ts +23 -0
- package/dist/cpu-quota.js +86 -0
- package/dist/cpu-quota.js.map +1 -0
- package/dist/daemon.js +22 -7
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +20 -6
- package/dist/dashboard-permissions.js +58 -9
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/fleet-manager.d.ts +51 -1
- package/dist/fleet-manager.js +416 -32
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +5 -2
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +14 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +24 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +24 -1
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +6 -3
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +12 -5
- package/dist/instance-config-impact.js +10 -5
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +17 -0
- package/dist/instance-lifecycle.js +32 -4
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/kiro-db-reader.d.ts +5 -0
- package/dist/kiro-db-reader.js +18 -0
- package/dist/kiro-db-reader.js.map +1 -1
- package/dist/kiro-engine-status.d.ts +2 -0
- package/dist/kiro-engine-status.js +9 -0
- package/dist/kiro-engine-status.js.map +1 -1
- package/dist/kiro-migrate.d.ts +49 -0
- package/dist/kiro-migrate.js +105 -0
- package/dist/kiro-migrate.js.map +1 -0
- package/dist/kiro-transcript-lane.d.ts +2 -0
- package/dist/kiro-transcript-lane.js.map +1 -1
- package/dist/kiro-transcript-worker.js +1 -0
- package/dist/kiro-transcript-worker.js.map +1 -1
- package/dist/kiro-usage-run.d.ts +7 -0
- package/dist/kiro-usage-run.js +39 -0
- package/dist/kiro-usage-run.js.map +1 -0
- package/dist/kiro-usage-scan.d.ts +49 -0
- package/dist/kiro-usage-scan.js +223 -0
- package/dist/kiro-usage-scan.js.map +1 -0
- package/dist/kiro-usage-worker.d.ts +1 -0
- package/dist/kiro-usage-worker.js +10 -0
- package/dist/kiro-usage-worker.js.map +1 -0
- package/dist/kiro-usage.d.ts +58 -0
- package/dist/kiro-usage.js +310 -0
- package/dist/kiro-usage.js.map +1 -0
- package/dist/locale.js +72 -8
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +1 -1
- package/dist/log-service.js.map +1 -1
- package/dist/login-url.d.ts +4 -0
- package/dist/login-url.js +22 -0
- package/dist/login-url.js.map +1 -0
- package/dist/needs-you-hub.d.ts +2 -1
- package/dist/needs-you-hub.js +1 -1
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +8 -2
- package/dist/needs-you.js +6 -0
- package/dist/needs-you.js.map +1 -1
- package/dist/notice-delivery.d.ts +15 -0
- package/dist/notice-delivery.js +37 -0
- package/dist/notice-delivery.js.map +1 -0
- package/dist/opencode-usage-scan.d.ts +28 -0
- package/dist/opencode-usage-scan.js +92 -0
- package/dist/opencode-usage-scan.js.map +1 -0
- package/dist/opencode-usage-worker.d.ts +1 -0
- package/dist/opencode-usage-worker.js +10 -0
- package/dist/opencode-usage-worker.js.map +1 -0
- package/dist/outbound-handlers.js +22 -2
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +24 -0
- package/dist/outbound-schemas.js +21 -0
- 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.js +13 -2
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.js +4 -1
- package/dist/quickstart.js.map +1 -1
- package/dist/reply-triggers.d.ts +2 -0
- package/dist/reply-triggers.js +3 -0
- package/dist/reply-triggers.js.map +1 -0
- package/dist/settings-api.js +27 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +17 -14
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +4 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +7 -1
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-host.d.ts +9 -0
- package/dist/setup-host.js +126 -6
- package/dist/setup-host.js.map +1 -1
- package/dist/setup-signin-assets.d.ts +2 -0
- package/dist/setup-signin-assets.js +6 -0
- package/dist/setup-signin-assets.js.map +1 -0
- package/dist/setup-wizard.js +4 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/structured-signin-transport.d.ts +8 -0
- package/dist/structured-signin-transport.js +79 -0
- package/dist/structured-signin-transport.js.map +1 -0
- package/dist/structured-signin.d.ts +131 -0
- package/dist/structured-signin.js +388 -0
- package/dist/structured-signin.js.map +1 -0
- package/dist/tool-permissions.js +12 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.js +6 -2
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +26 -2
- package/dist/transcript-sources.js +87 -40
- package/dist/transcript-sources.js.map +1 -1
- package/dist/turn-reply-guard.d.ts +1 -1
- package/dist/turn-reply-guard.js +1 -1
- package/dist/turn-reply-guard.js.map +1 -1
- package/dist/types.d.ts +19 -8
- package/dist/ui/backend-signin.js +63 -10
- package/dist/ui/fleet-office-editor.js +10 -6
- package/dist/ui/fleet-office-layout.js +34 -28
- package/dist/ui/fleet-office-model.js +6 -3
- package/dist/ui/fleet-office-overview.js +2 -2
- package/dist/ui/fleet-office-pack.d.ts +3 -1
- package/dist/ui/fleet-office-pack.js +58 -7
- package/dist/ui/fleet-office-skin.js +13 -4
- package/dist/ui/fleet-office-store.js +27 -1
- package/dist/ui/fleet-office-view.js +5 -4
- package/dist/ui/fleet-office-zones.js +155 -6
- package/dist/ui/fleet-office.js +169 -41
- package/dist/ui/fleet-usage.js +19 -15
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +4 -4
- package/dist/ui/panel-settings.js +32 -10
- package/dist/ui/settings-dialogs.js +8 -1
- package/dist/ui/settings-model.js +14 -6
- package/dist/ui/settings-registry.js +4 -0
- package/dist/ui/settings-strings.js +14 -0
- package/dist/ui/shared/app-i18n.js +4 -2
- package/dist/ui/shared/app-shell.js +14 -6
- package/dist/ui/shared/app-stream.js +2 -1
- package/dist/ui/shared/app.css +18 -2
- package/dist/ui/shared/side-panel.js +95 -0
- package/dist/ui/structured-signin.js +115 -0
- package/dist/usage-report.d.ts +20 -0
- package/dist/usage-report.js +54 -17
- package/dist/usage-report.js.map +1 -1
- package/dist/usage-rollup.d.ts +9 -1
- package/dist/usage-rollup.js +20 -4
- package/dist/usage-rollup.js.map +1 -1
- package/dist/web-api.d.ts +4 -0
- package/dist/web-api.js +110 -0
- 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-backend-login.d.ts +1 -7
- package/dist/web-backend-login.js +2 -24
- package/dist/web-backend-login.js.map +1 -1
- package/dist/web-office-acts.d.ts +173 -0
- package/dist/web-office-acts.js +285 -0
- package/dist/web-office-acts.js.map +1 -0
- package/dist/web-office-skins.d.ts +1 -1
- package/dist/web-office-skins.js +1 -1
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-settings-patch.d.ts +2 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/package.json +2 -1
- package/templates/windows-shortcuts.ps1 +18 -7
package/dist/needs-you.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* rendered list is (its signature), and the live chat message's text and links. Nothing here touches a socket,
|
|
7
7
|
* a file or a clock of its own.
|
|
8
8
|
*/
|
|
9
|
-
export type NeedsYouType = "prompt" | "awaiting_input" | "instance" | "delivery" | "task";
|
|
9
|
+
export type NeedsYouType = "prompt" | "awaiting_input" | "instance" | "delivery" | "task" | "backend";
|
|
10
10
|
export interface NeedsYouItem {
|
|
11
11
|
/** Stable per occurrence: a new episode, crash or delivery is a new id (§3). */
|
|
12
12
|
id: string;
|
|
@@ -60,7 +60,7 @@ export interface NeedsYouItem {
|
|
|
60
60
|
*/
|
|
61
61
|
lane?: string;
|
|
62
62
|
}
|
|
63
|
-
export type NeedsYouReason = "hang" | "exited" | "assist" | "permission" | "dangerous_command" | "login" | "dialog" | "terminal_input" | "auth_paused" | "crashed" | "delivery_uncertain" | "delivery_failed" | "task_review" | "task_blocked";
|
|
63
|
+
export type NeedsYouReason = "hang" | "exited" | "assist" | "permission" | "dangerous_command" | "login" | "dialog" | "terminal_input" | "auth_paused" | "crashed" | "delivery_uncertain" | "delivery_failed" | "task_review" | "task_blocked" | "backend_signin";
|
|
64
64
|
/** A fleet prompt offered on the dashboard (hang / exit-restart / interactive-assist), as the fleet holds it. */
|
|
65
65
|
export interface PromptInput {
|
|
66
66
|
nonce: string;
|
|
@@ -136,11 +136,17 @@ export interface TaskInput {
|
|
|
136
136
|
/** Epoch ms since it has waited (its move to review or to blocked). */
|
|
137
137
|
since: number;
|
|
138
138
|
}
|
|
139
|
+
export interface BackendSignInInput {
|
|
140
|
+
backend: string;
|
|
141
|
+
since: number;
|
|
142
|
+
browser: boolean;
|
|
143
|
+
}
|
|
139
144
|
export interface NeedsYouInputs {
|
|
140
145
|
prompts: PromptInput[];
|
|
141
146
|
instances: InstanceInput[];
|
|
142
147
|
deliveries: DeliveryInput[];
|
|
143
148
|
tasks?: TaskInput[];
|
|
149
|
+
backendSignIns?: BackendSignInInput[];
|
|
144
150
|
/** The live world that owns an instance, or undefined (no channel, or its world is gone). */
|
|
145
151
|
ownerOf: (instance: string) => string | undefined;
|
|
146
152
|
}
|
package/dist/needs-you.js
CHANGED
|
@@ -69,6 +69,12 @@ export function deriveNeedsYou(inputs) {
|
|
|
69
69
|
detail: oneLine(`${d.source} → ${d.target} · ${d.kind}`), since: d.finishedAt, deliveryId: d.deliveryId,
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
+
// Installer-selected backends are fleet-level web items, including when no agent uses them.
|
|
73
|
+
for (const b of inputs.backendSignIns ?? [])
|
|
74
|
+
items.push({
|
|
75
|
+
id: `backend-signin:${b.backend}:${b.since}`, type: "backend", instance: "", reason: "backend_signin", detail: b.backend, since: b.since,
|
|
76
|
+
...(b.browser ? { signIn: { backend: b.backend } } : {}),
|
|
77
|
+
});
|
|
72
78
|
// Task board cards waiting for the person (#2246 step 3), under their assignee.
|
|
73
79
|
for (const c of inputs.tasks ?? []) {
|
|
74
80
|
items.push({
|
package/dist/needs-you.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needs-you.js","sourceRoot":"","sources":["../src/needs-you.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"needs-you.js","sourceRoot":"","sources":["../src/needs-you.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FleetDefaults, WebConfig } from "./types.js";
|
|
2
|
+
export type NoticeMode = boolean | "dm";
|
|
3
|
+
type NoticeConfig = {
|
|
4
|
+
defaults: FleetDefaults;
|
|
5
|
+
web?: WebConfig;
|
|
6
|
+
};
|
|
7
|
+
/** Old versions see ordinary enabled notices; only new versions interpret the routing preference. */
|
|
8
|
+
export declare const NEW_FLEET_WEB: Readonly<Pick<WebConfig, "notify_login" | "notice_delivery">>;
|
|
9
|
+
export declare function loginNoticeMode(web?: WebConfig): NoticeMode;
|
|
10
|
+
export declare function tipNoticeMode(config: NoticeConfig): NoticeMode;
|
|
11
|
+
/** API choices remain three-way; disk always uses boolean legacy fields plus an optional, ignored routing key. */
|
|
12
|
+
export declare function setNoticeMode(config: NoticeConfig, kind: "login" | "tips", mode: NoticeMode): void;
|
|
13
|
+
/** Accept the short-lived #2581 string form, but never write it back to either legacy boolean key. */
|
|
14
|
+
export declare function normalizeNoticeDelivery(config: NoticeConfig): void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Old versions see ordinary enabled notices; only new versions interpret the routing preference. */
|
|
2
|
+
export const NEW_FLEET_WEB = Object.freeze({
|
|
3
|
+
notify_login: true, notice_delivery: Object.freeze({ login: "dm" }),
|
|
4
|
+
});
|
|
5
|
+
export function loginNoticeMode(web) {
|
|
6
|
+
const enabled = web?.notify_login ?? true;
|
|
7
|
+
return enabled === true && web?.notice_delivery?.login === "dm" ? "dm" : enabled;
|
|
8
|
+
}
|
|
9
|
+
export function tipNoticeMode(config) {
|
|
10
|
+
const enabled = config.defaults.tips ?? true;
|
|
11
|
+
return enabled === true && config.web?.notice_delivery?.tips === "dm" ? "dm" : enabled;
|
|
12
|
+
}
|
|
13
|
+
/** API choices remain three-way; disk always uses boolean legacy fields plus an optional, ignored routing key. */
|
|
14
|
+
export function setNoticeMode(config, kind, mode) {
|
|
15
|
+
const web = config.web = { ...config.web };
|
|
16
|
+
const delivery = { ...web.notice_delivery };
|
|
17
|
+
if (mode === "dm")
|
|
18
|
+
delivery[kind] = "dm";
|
|
19
|
+
else
|
|
20
|
+
delete delivery[kind];
|
|
21
|
+
if (Object.keys(delivery).length)
|
|
22
|
+
web.notice_delivery = delivery;
|
|
23
|
+
else
|
|
24
|
+
delete web.notice_delivery;
|
|
25
|
+
if (kind === "login")
|
|
26
|
+
web.notify_login = mode !== false;
|
|
27
|
+
else
|
|
28
|
+
config.defaults.tips = mode !== false;
|
|
29
|
+
}
|
|
30
|
+
/** Accept the short-lived #2581 string form, but never write it back to either legacy boolean key. */
|
|
31
|
+
export function normalizeNoticeDelivery(config) {
|
|
32
|
+
if (config.web?.notify_login === "dm")
|
|
33
|
+
setNoticeMode(config, "login", "dm");
|
|
34
|
+
if (config.defaults.tips === "dm")
|
|
35
|
+
setNoticeMode(config, "tips", "dm");
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=notice-delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notice-delivery.js","sourceRoot":"","sources":["../src/notice-delivery.ts"],"names":[],"mappings":"AAIA,qGAAqG;AACrG,MAAM,CAAC,MAAM,aAAa,GAAkE,MAAM,CAAC,MAAM,CAAC;IACxG,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC;CAC7E,CAAC,CAAC;AACH,MAAM,UAAU,eAAe,CAAC,GAAe;IAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC;IAC1C,OAAO,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,eAAe,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACnF,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IAC7C,OAAO,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACzF,CAAC;AACD,kHAAkH;AAClH,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,IAAsB,EAAE,IAAgB;IAC1F,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IAC5C,IAAI,IAAI,KAAK,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;;QAAM,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC;;QAAM,OAAO,GAAG,CAAC,eAAe,CAAC;IAClG,IAAI,IAAI,KAAK,OAAO;QAAE,GAAG,CAAC,YAAY,GAAG,IAAI,KAAK,KAAK,CAAC;;QAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,KAAK,KAAK,CAAC;AACtG,CAAC;AACD,sGAAsG;AACtG,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,IAAI,MAAM,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI;QAAE,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI;QAAE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Turn } from "./cache-ledger.js";
|
|
2
|
+
/** Where reading stopped: the last update time read, and the ids counted at or after the read window. */
|
|
3
|
+
export interface OpencodeCursor {
|
|
4
|
+
after: number;
|
|
5
|
+
ids: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface OpencodeScanInput {
|
|
8
|
+
dbPath: string;
|
|
9
|
+
cutoff: number;
|
|
10
|
+
instances: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
cwds: string[];
|
|
13
|
+
cursor: OpencodeCursor | null;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export interface OpencodeScanOutput {
|
|
17
|
+
instances: Array<{
|
|
18
|
+
name: string;
|
|
19
|
+
turns: Turn[];
|
|
20
|
+
cursor: OpencodeCursor;
|
|
21
|
+
failed: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
/** Ids kept per instance: enough for a month of a busy agent; the oldest go first. */
|
|
25
|
+
export declare const OPENCODE_IDS_MAX = 20000;
|
|
26
|
+
/** The turn one assistant message records, or null (not an assistant's, not finished, or no tokens). */
|
|
27
|
+
export declare function opencodeTurn(data: unknown): Turn | null;
|
|
28
|
+
export declare function scanOpencodeUsage(input: OpencodeScanInput): OpencodeScanOutput;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #2122 §10 step 5: OpenCode's usage — each assistant message's `tokens` in `opencode.db` (real counts, per message), by
|
|
3
|
+
* the working directory its session records (`session.directory`). OpenCode keeps messages in two tables, `message`
|
|
4
|
+
* (older) and `session_message` (newer, `type = 'assistant'`); a message copied from one to the other keeps its id, so
|
|
5
|
+
* each id is counted once. Only a finished message (`time.completed`) is counted: its tokens are final.
|
|
6
|
+
*
|
|
7
|
+
* Units: `tokens.input` is uncached, `tokens.cache.read`/`.write` are the cache, and `tokens.reasoning` is apart from
|
|
8
|
+
* `tokens.output` (it is often larger) — so the ledger's output is output + reasoning, reasoning its part (§10.3).
|
|
9
|
+
* `cost` is what the provider charged (0 on a subscription such as github-copilot): the amount only where the price
|
|
10
|
+
* table lacks the model. The field mapping follows tokscale (sessions/opencode_schema.rs at 669fdaee, MIT; see
|
|
11
|
+
* THIRD_PARTY_NOTICES.md). Read-only, synchronous: it runs on a worker thread (kiro-usage-run.ts).
|
|
12
|
+
*/
|
|
13
|
+
import Database from "better-sqlite3";
|
|
14
|
+
import { existsSync } from "node:fs";
|
|
15
|
+
/** Ids kept per instance: enough for a month of a busy agent; the oldest go first. */
|
|
16
|
+
export const OPENCODE_IDS_MAX = 20_000;
|
|
17
|
+
const num = (v) => (typeof v === "number" && Number.isFinite(v) && v > 0 ? v : 0);
|
|
18
|
+
const ms = (v) => { const n = num(v); return n ? (n <= 1e12 ? n * 1000 : n) : null; };
|
|
19
|
+
/** The turn one assistant message records, or null (not an assistant's, not finished, or no tokens). */
|
|
20
|
+
export function opencodeTurn(data) {
|
|
21
|
+
const d = data;
|
|
22
|
+
if (!d || typeof d !== "object" || !d.tokens || typeof d.tokens !== "object")
|
|
23
|
+
return null;
|
|
24
|
+
if (d.role !== undefined && d.role !== "assistant")
|
|
25
|
+
return null;
|
|
26
|
+
const t = ms(d.time?.created);
|
|
27
|
+
if (t === null || ms(d.time?.completed) === null)
|
|
28
|
+
return null;
|
|
29
|
+
const tk = d.tokens, cache = (tk.cache ?? {});
|
|
30
|
+
const input = num(tk.input), read = num(cache.read), write = num(cache.write), output = num(tk.output), reasoning = num(tk.reasoning);
|
|
31
|
+
if (!input && !read && !write && !output && !reasoning)
|
|
32
|
+
return null;
|
|
33
|
+
const model = typeof d.modelID === "string" && d.modelID ? d.modelID : typeof d.model?.id === "string" && d.model.id ? d.model.id : "unknown";
|
|
34
|
+
const cost = num(d.cost);
|
|
35
|
+
return { t, model, prompt: input + read + write, uncached: input, read, write5m: 0, write1h: 0, write, output: output + reasoning, reasoning, ...(cost ? { cost } : {}) };
|
|
36
|
+
}
|
|
37
|
+
export function scanOpencodeUsage(input) {
|
|
38
|
+
const fail = () => ({ instances: input.instances.map(i => ({ name: i.name, turns: [], cursor: i.cursor ?? { after: input.cutoff, ids: [] }, failed: true })) });
|
|
39
|
+
if (!existsSync(input.dbPath))
|
|
40
|
+
return { instances: input.instances.map(i => ({ name: i.name, turns: [], cursor: i.cursor ?? { after: input.cutoff, ids: [] }, failed: false })) };
|
|
41
|
+
let db;
|
|
42
|
+
try {
|
|
43
|
+
db = new Database(input.dbPath, { readonly: true, fileMustExist: true });
|
|
44
|
+
db.pragma("query_only = ON");
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return fail();
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const tables = new Set(db.prepare("SELECT name FROM sqlite_master WHERE type = 'table'").all().map(r => r.name));
|
|
51
|
+
const from = Math.min(...input.instances.map(i => Math.max(i.cursor?.after ?? input.cutoff, input.cutoff)));
|
|
52
|
+
const rows = [];
|
|
53
|
+
if (tables.has("message") && tables.has("session"))
|
|
54
|
+
rows.push(...db.prepare("SELECT m.id AS id, m.time_updated AS u, m.data AS data, s.directory AS dir FROM message m LEFT JOIN session s ON s.id = m.session_id WHERE m.time_updated >= ?").all(from));
|
|
55
|
+
if (tables.has("session_message") && tables.has("session_v2"))
|
|
56
|
+
rows.push(...db.prepare("SELECT sm.id AS id, sm.time_updated AS u, sm.data AS data, s.directory AS dir FROM session_message sm LEFT JOIN session_v2 s ON s.id = sm.session_id WHERE sm.type = 'assistant' AND sm.time_updated >= ?").all(from));
|
|
57
|
+
rows.sort((a, b) => a.u - b.u || a.id.localeCompare(b.id));
|
|
58
|
+
return {
|
|
59
|
+
instances: input.instances.map((inst) => {
|
|
60
|
+
const cwds = new Set(inst.cwds), after = Math.max(inst.cursor?.after ?? input.cutoff, input.cutoff);
|
|
61
|
+
const seen = new Set(inst.cursor?.ids ?? []), ids = [...(inst.cursor?.ids ?? [])], turns = [];
|
|
62
|
+
let last = after;
|
|
63
|
+
for (const r of rows) {
|
|
64
|
+
if (r.u < after || r.dir === null || !cwds.has(r.dir) || seen.has(r.id))
|
|
65
|
+
continue;
|
|
66
|
+
let data;
|
|
67
|
+
try {
|
|
68
|
+
data = JSON.parse(r.data);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const turn = opencodeTurn(data);
|
|
74
|
+
if (!turn)
|
|
75
|
+
continue; // not finished yet: read again once it is updated
|
|
76
|
+
seen.add(r.id);
|
|
77
|
+
ids.push(r.id);
|
|
78
|
+
turns.push(turn);
|
|
79
|
+
last = Math.max(last, r.u);
|
|
80
|
+
}
|
|
81
|
+
return { name: inst.name, turns, cursor: { after: last, ids: ids.slice(-OPENCODE_IDS_MAX) }, failed: false };
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return fail();
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
db.close();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=opencode-usage-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-usage-scan.js","sourceRoot":"","sources":["../src/opencode-usage-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** #2122: the OpenCode usage scan's thread (opencode-usage-scan.ts): one scan per worker, its answer posted back. */
|
|
2
|
+
import { parentPort, workerData } from "node:worker_threads";
|
|
3
|
+
import { scanOpencodeUsage } from "./opencode-usage-scan.js";
|
|
4
|
+
try {
|
|
5
|
+
parentPort?.postMessage({ ok: true, out: scanOpencodeUsage(workerData) });
|
|
6
|
+
}
|
|
7
|
+
catch (err) {
|
|
8
|
+
parentPort?.postMessage({ ok: false, error: String(err) });
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=opencode-usage-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-usage-worker.js","sourceRoot":"","sources":["../src/opencode-usage-worker.ts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAA0B,MAAM,0BAA0B,CAAC;AAErF,IAAI,CAAC;IAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,CAAC,UAA+B,CAAC,EAAE,CAAC,CAAC;AAAC,CAAC;AACvG,OAAO,GAAG,EAAE,CAAC;IAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAAC,CAAC"}
|
|
@@ -15,7 +15,7 @@ import { CHAT_PROFILE_LOGIN_BACKENDS, credentialProfileLogin, credentialSwitchCa
|
|
|
15
15
|
import { kiroEngineCandidates, kiroEngineStatus } from "./kiro-engine-status.js";
|
|
16
16
|
import { noPlaceMarkers, placeRef, renderPlaceRefs, stripPlaceRefs, webRoute } from "./topic-link.js";
|
|
17
17
|
import { formatCrossInstanceInboundMessage, MAX_ASSEMBLED_CROSS_INSTANCE_MESSAGE_BYTES, } from "./cross-instance-envelope.js";
|
|
18
|
-
import { BroadcastArgs, CreateInstanceArgs, CreateTeamArgs, DelegateTaskArgs, DeleteInstanceArgs, DeleteTeamArgs, DeployTemplateArgs, DescribeInstanceArgs, ListDeploymentsArgs, ListInstancesArgs, ListTeamsArgs, ReplaceInstanceArgs, ReportResultArgs, DeliveryStatusArgs, RequestInformationArgs, RestartInstanceArgs, SendToInstanceArgs, PauseInstanceArgs, WakeInstanceArgs, StopInstanceArgs, GetInstanceLogsArgs, GetEffortArgs, ClosePollArgs, KiroEngineStatusArgs, GetUsageArgs, GetCacheReportArgs, GetUsageReportArgs, GetWebSettingsArgs, SetWebSettingsArgs, ListModelsArgs, GetFleetConfigArgs, UpdateInstanceConfigArgs, UpdateFleetDefaultsArgs, StartInstanceArgs, TeardownDeploymentArgs, UpdateTeamArgs, validateArgs, } from "./outbound-schemas.js";
|
|
18
|
+
import { BroadcastArgs, CreateInstanceArgs, CreateTeamArgs, DelegateTaskArgs, DeleteInstanceArgs, DeleteTeamArgs, DeployTemplateArgs, DescribeInstanceArgs, ListDeploymentsArgs, ListInstancesArgs, ListTeamsArgs, ReplaceInstanceArgs, ReportResultArgs, DeliveryStatusArgs, RequestInformationArgs, RestartInstanceArgs, SendToInstanceArgs, PauseInstanceArgs, WakeInstanceArgs, StopInstanceArgs, GetInstanceLogsArgs, GetEffortArgs, ClosePollArgs, KiroEngineStatusArgs, MigrateKiroInstanceArgs, GetUsageArgs, GetCacheReportArgs, GetUsageReportArgs, GetWebSettingsArgs, SetWebSettingsArgs, ListModelsArgs, GetFleetConfigArgs, UpdateInstanceConfigArgs, UpdateFleetDefaultsArgs, StartInstanceArgs, TeardownDeploymentArgs, UpdateTeamArgs, validateArgs, } from "./outbound-schemas.js";
|
|
19
19
|
const HOME_DIR = homedir();
|
|
20
20
|
function formatByteSize(bytes) {
|
|
21
21
|
if (bytes < 1024)
|
|
@@ -856,6 +856,25 @@ const kiroEngineStatusHandler = (ctx, rawArgs, respond) => {
|
|
|
856
856
|
}
|
|
857
857
|
respond(status);
|
|
858
858
|
};
|
|
859
|
+
/** #2598 B2: ask for a fleet admin's Confirm on a kiro classic → TUI move; the move itself runs on the click. */
|
|
860
|
+
const migrateKiroInstance = async (ctx, rawArgs, respond) => {
|
|
861
|
+
const v = validateArgs(MigrateKiroInstanceArgs, rawArgs, "migrate_kiro_instance");
|
|
862
|
+
if (!v.ok) {
|
|
863
|
+
respond(null, v.error);
|
|
864
|
+
return;
|
|
865
|
+
}
|
|
866
|
+
const fm = ctx;
|
|
867
|
+
if (!fm.requestKiroMigration) {
|
|
868
|
+
respond(null, "migrate_kiro_instance is not available here");
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
871
|
+
const result = await fm.requestKiroMigration(v.data.name, v.data.start_fresh === true);
|
|
872
|
+
if (!result.ok) {
|
|
873
|
+
respond(null, result.error);
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
876
|
+
respond({ status: "awaiting_admin_confirmation", name: v.data.name, classic_conversation: result.classic_conversation, note: result.text });
|
|
877
|
+
};
|
|
859
878
|
/** #1823: close one of the caller's own polls before its deadline; its results then go out as at the deadline. */
|
|
860
879
|
const closePoll = async (ctx, rawArgs, respond, meta) => {
|
|
861
880
|
const v = validateArgs(ClosePollArgs, rawArgs, "close_poll");
|
|
@@ -1376,7 +1395,7 @@ export function applyInstanceConfigPatch(ctx, name, patch, respond) {
|
|
|
1376
1395
|
// happen when the agent reaches for it.
|
|
1377
1396
|
conversation_carried_over: carried || !switchLosesConversation,
|
|
1378
1397
|
...(carried
|
|
1379
|
-
? { conversation_note: "The conversation was copied into the new profile and resumed there (the old profile keeps its own copy). The
|
|
1398
|
+
? { conversation_note: "The conversation was copied into the new profile and resumed there (the old profile keeps its own copy). The switch does not by itself make the prompt cache cold: within the same cache scope (organization, and workspace where the provider isolates them) an unchanged model and prompt prefix are usually reused. The next reply may rebuild it (one slower, full-price turn) when the scope, the model or the profile's settings differ, or the cache has expired." }
|
|
1380
1399
|
: switchLosesConversation
|
|
1381
1400
|
? { handover_chars: handoverChars, ...(carry?.result && !carry.result.carried ? { carry_failed: carry.result.reason } : {}) }
|
|
1382
1401
|
: { conversation_note: `${backendAfter} keeps its history outside the login, so it is shared across profiles; switching back to a profile returns to the same history.` }),
|
|
@@ -2165,6 +2184,7 @@ export const outboundHandlers = new Map([
|
|
|
2165
2184
|
["get_effort", getEffort],
|
|
2166
2185
|
["close_poll", closePoll],
|
|
2167
2186
|
["kiro_engine_status", kiroEngineStatusHandler],
|
|
2187
|
+
["migrate_kiro_instance", migrateKiroInstance],
|
|
2168
2188
|
["get_usage", getUsage],
|
|
2169
2189
|
["get_cache_report", getCacheReport],
|
|
2170
2190
|
["get_usage_report", getUsageReport],
|