@askexenow/exe-os 0.9.296 → 0.9.298
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/deploy/compose/.env.customer.example +6 -1
- package/deploy/compose/.env.example +6 -1
- package/deploy/compose/docker-compose.yml +24 -5
- package/deploy/compose/generate-env.ts +20 -2
- package/deploy/compose/setup.sh +10 -1
- package/deploy/stack-manifests/v0.9.json +1 -1
- package/dist/active-agent-3JXJQ2GZ.js +27 -0
- package/dist/active-agent-XK54VI3S.js +28 -0
- package/dist/agentic-ontology-BPJOT2H2.js +25 -0
- package/dist/backfill-metadata-OTLLYTX4.js +600 -0
- package/dist/behaviors-BGEUHF7D.js +46 -0
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +4 -4
- package/dist/bin/backfill-responses.js +4 -4
- package/dist/bin/backfill-vectors.js +5 -5
- package/dist/bin/bulk-sync-postgres.js +7 -7
- package/dist/bin/cc-doctor.js +5 -4
- package/dist/bin/cleanup-stale-review-tasks.js +9 -9
- package/dist/bin/cli.js +15 -15
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +13 -13
- package/dist/bin/exe-assign.js +5 -5
- package/dist/bin/exe-boot.js +32 -17
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +7 -7
- package/dist/bin/exe-dispatch.js +9 -9
- package/dist/bin/exe-doctor.js +2 -2
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +5 -4
- package/dist/bin/exe-heartbeat.js +9 -9
- package/dist/bin/exe-kill.js +12 -12
- package/dist/bin/exe-launch-agent.js +25 -16
- package/dist/bin/exe-new-employee.js +6 -6
- package/dist/bin/exe-pending-messages.js +10 -10
- package/dist/bin/exe-pending-notifications.js +9 -9
- package/dist/bin/exe-pending-reviews.js +9 -9
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +11 -11
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +14 -14
- package/dist/bin/exe-settings.js +8 -8
- package/dist/bin/exe-start-codex.js +11 -11
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +10 -10
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +10 -10
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install-launchd.js +10 -124
- package/dist/bin/install.js +21 -12
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/scan-tasks.js +9 -9
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +27 -3
- package/dist/capability-cards-KR7BOS2H.js +89 -0
- package/dist/capacity-monitor-CQFYTU45.js +51 -0
- package/dist/catchup-brief-HNT2CYJQ.js +175 -0
- package/dist/cc-binary-detect-4B25R3TO.js +15 -0
- package/dist/chunk-2DQIQXHX.js +204 -0
- package/dist/chunk-2DWYR2LJ.js +395 -0
- package/dist/chunk-2MSLUPJA.js +70 -0
- package/dist/chunk-2P5KBHJH.js +362 -0
- package/dist/chunk-2QGG6GG3.js +4388 -0
- package/dist/chunk-2XR6OX3M.js +181 -0
- package/dist/chunk-3REXR56D.js +98 -0
- package/dist/chunk-4FEZF2HJ.js +184 -0
- package/dist/chunk-54PQ35JV.js +244 -0
- package/dist/chunk-5ALR7GCX.js +33 -0
- package/dist/chunk-5GJ5MHC3.js +1094 -0
- package/dist/chunk-5IIJUSVD.js +240 -0
- package/dist/chunk-5XM7CTLK.js +199 -0
- package/dist/chunk-6GQMQJE2.js +331 -0
- package/dist/chunk-7C4K7HSF.js +262 -0
- package/dist/chunk-AAFTYJ5R.js +185 -0
- package/dist/chunk-ANIZN35L.js +284 -0
- package/dist/chunk-AOXVDJ7W.js +150 -0
- package/dist/chunk-AR3HN5SA.js +76 -0
- package/dist/chunk-BFFM7FF4.js +214 -0
- package/dist/chunk-CVJYNRYF.js +50 -0
- package/dist/chunk-CXEY5CE2.js +81 -0
- package/dist/chunk-CY4IRJ2I.js +381 -0
- package/dist/chunk-DBNTPP7Q.js +1079 -0
- package/dist/chunk-DTLYO26W.js +402 -0
- package/dist/chunk-EESPF5VS.js +1350 -0
- package/dist/chunk-EN4D3BCA.js +2135 -0
- package/dist/chunk-EYDBWKYI.js +304 -0
- package/dist/chunk-FCSS3YHS.js +348 -0
- package/dist/chunk-G4VSF4DA.js +630 -0
- package/dist/chunk-GEF6EHCW.js +197 -0
- package/dist/chunk-GXDV35ZN.js +735 -0
- package/dist/chunk-HJWT6TFU.js +97 -0
- package/dist/chunk-HQD3IPZA.js +14597 -0
- package/dist/chunk-I3IW6AAX.js +3342 -0
- package/dist/chunk-I4JYP7CK.js +535 -0
- package/dist/chunk-J2VWNIYC.js +167 -0
- package/dist/chunk-JK5OLEM6.js +227 -0
- package/dist/chunk-JVMP77TZ.js +1186 -0
- package/dist/chunk-KJ5DAVIP.js +122 -0
- package/dist/chunk-KPP2AYJV.js +333 -0
- package/dist/chunk-L2WWAOQF.js +455 -0
- package/dist/chunk-L3STXXCO.js +731 -0
- package/dist/chunk-LMX434DW.js +38 -0
- package/dist/chunk-LP4NNUZN.js +58 -0
- package/dist/chunk-MN7Q23PF.js +157 -0
- package/dist/chunk-O4QLYWMC.js +668 -0
- package/dist/chunk-OP5W524C.js +85 -0
- package/dist/chunk-OQ336FHE.js +836 -0
- package/dist/chunk-P7WAPK6X.js +54 -0
- package/dist/chunk-PLM4JJHE.js +128 -0
- package/dist/chunk-POTMDICN.js +1352 -0
- package/dist/chunk-POZYABJT.js +567 -0
- package/dist/chunk-PQG2IQNN.js +280 -0
- package/dist/chunk-PUGKVPCC.js +210 -0
- package/dist/chunk-QE6AI57N.js +1158 -0
- package/dist/chunk-QNCZDDVW.js +448 -0
- package/dist/chunk-QZIYE2QV.js +456 -0
- package/dist/chunk-RXOHALES.js +345 -0
- package/dist/chunk-SGUSCL3H.js +129 -0
- package/dist/chunk-SWOGQD57.js +85 -0
- package/dist/chunk-SZLIO4SL.js +128 -0
- package/dist/chunk-T2USDSC2.js +221 -0
- package/dist/chunk-UKE7MZVO.js +382 -0
- package/dist/chunk-VSRJPOZD.js +290 -0
- package/dist/chunk-WCQ3Y5LB.js +2162 -0
- package/dist/chunk-WHBT6M3P.js +30 -0
- package/dist/chunk-WR6ANODF.js +57 -0
- package/dist/chunk-X7ADWEZ7.js +171 -0
- package/dist/chunk-Y4QZXMCD.js +123 -0
- package/dist/chunk-Y4WA4CUW.js +377 -0
- package/dist/chunk-YUOUHUAJ.js +127 -0
- package/dist/chunk-YXC3OWWW.js +128 -0
- package/dist/co-activation-EN7HT734.js +74 -0
- package/dist/co-occurrence-TRPHUCSC.js +95 -0
- package/dist/core-memory-TVMGLIJ7.js +110 -0
- package/dist/crdt-sync-WOMERQIS.js +33 -0
- package/dist/crm-webhook-Q5Z74FDJ.js +10 -0
- package/dist/cto-delegation-gate-NEMNMLXB.js +280 -0
- package/dist/daemon-orchestration-RYDUCL24.js +143 -0
- package/dist/db-backup-Z3E3LHZK.js +43 -0
- package/dist/doc-graph-extractor-TSCKGSB5.js +133 -0
- package/dist/dreaming-42LRG6AO.js +34 -0
- package/dist/exe-drift-SJ6OTCQV.js +70 -0
- package/dist/exe-export-SRDDONTU.js +77 -0
- package/dist/exe-import-PWHXRFLN.js +80 -0
- package/dist/exe-key-GH6ITI5C.js +673 -0
- package/dist/exe-snapshot-RVLH5PJZ.js +338 -0
- package/dist/fast-db-init-CM4XPET2.js +7 -0
- package/dist/gateway/index.js +14 -14
- package/dist/git-staleness-7EFCUGT2.js +112 -0
- package/dist/git-task-sweep-6DR24G3Y.js +42 -0
- package/dist/global-procedures-NXLOLU7Y.js +22 -0
- package/dist/graph-auto-extract-5F3PLBCK.js +183 -0
- package/dist/hooks/bug-report-worker.js +11 -11
- package/dist/hooks/codex-stop-task-finalizer.js +11 -11
- package/dist/hooks/commit-complete.js +11 -11
- package/dist/hooks/error-recall.js +10 -7
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +10 -10
- package/dist/hooks/post-tool-combined.js +5 -5
- package/dist/hooks/pre-compact.js +11 -11
- package/dist/hooks/pre-tool-use.js +14 -14
- package/dist/hooks/prompt-submit.js +26 -22
- package/dist/hooks/session-end.js +15 -15
- package/dist/hooks/session-start.js +12 -12
- package/dist/hooks/stop.js +14 -14
- package/dist/hooks/subagent-stop.js +10 -10
- package/dist/hooks/summary-worker.js +14 -14
- package/dist/index.js +19 -19
- package/dist/installer-5WBAZKSI.js +344 -0
- package/dist/installer-ENK2QYTC.js +298 -0
- package/dist/installer-TUO7KCRN.js +40 -0
- package/dist/lib/cloud-sync.js +7 -7
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +4 -2
- package/dist/lib/db-read-worker-client.js +121 -0
- package/dist/lib/db-read-worker.js +73 -0
- package/dist/lib/db.js +4 -2
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon.js +110 -87
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/messaging.js +9 -9
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +10 -10
- package/dist/lib/tmux-routing.js +8 -8
- package/dist/lib/token-spend.js +3 -3
- package/dist/mcp/register-tools.js +56 -55
- package/dist/mcp/server.js +58 -57
- package/dist/mcp/tools/complete-reminder.js +4 -4
- package/dist/mcp/tools/create-reminder.js +4 -4
- package/dist/mcp/tools/create-task.js +12 -12
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +12 -12
- package/dist/mcp/tools/send-message.js +11 -11
- package/dist/mcp/tools/update-task.js +11 -11
- package/dist/mcp-http-config-FA6LWCTD.js +31 -0
- package/dist/memory-cards-4QRWCJ54.js +180 -0
- package/dist/memory-graph-extractor-HCS4XTQK.js +22 -0
- package/dist/memory-poisoning-defense-7I4LY4VL.js +224 -0
- package/dist/memory-reflection-ZSSO6RFR.js +244 -0
- package/dist/notifications-VQJCTOMC.js +47 -0
- package/dist/orchestration-events-UFRQWTRS.js +27 -0
- package/dist/orchestrator-ZSSTRMDC.js +35 -0
- package/dist/pipeline-router-U7WWUVKV.js +15 -0
- package/dist/plan-limits-KVFTHSQU.js +28 -0
- package/dist/project-boot-KOGUVIQ4.js +299 -0
- package/dist/projection-worker-OMUSXRHO.js +1084 -0
- package/dist/prospective-memory-PC72YWLY.js +232 -0
- package/dist/reranker-E3MOR2MC.js +19 -0
- package/dist/retrieval-health-OEHPZH65.js +12 -0
- package/dist/review-polling-4GWZSSSQ.js +126 -0
- package/dist/runtime/index.js +11 -11
- package/dist/session-events-A3L5KUHB.js +38 -0
- package/dist/session-kill-telemetry-UFJY57N2.js +31 -0
- package/dist/session-scope-5MT6U7CR.js +88 -0
- package/dist/setup-wizard-NZE2I7M5.js +12 -0
- package/dist/skill-refinement-Q6USTB35.js +159 -0
- package/dist/steward-gate-XOYAMKNY.js +15 -0
- package/dist/task-enforcement-MQ4TKLAN.js +506 -0
- package/dist/task-scope-AWFGZWPM.js +37 -0
- package/dist/tasks-crud-LMPAYXKS.js +79 -0
- package/dist/tasks-notify-6DZOY3MH.js +40 -0
- package/dist/tasks-review-TMBMXNUJ.js +49 -0
- package/dist/telemetry-upload-C2PKRA26.js +741 -0
- package/dist/token-budget-HOOQPFKR.js +86 -0
- package/dist/tool-telemetry-EJVBIKOS.js +17 -0
- package/dist/tui/App.js +16 -16
- package/dist/tui-data-6HIDQFN7.js +260 -0
- package/dist/wiki-acl-DOBVII5N.js +111 -0
- package/dist/worker-gate-ZH5PK25Z.js +21 -0
- package/dist/workflow-engine-SGU6WUWF.js +28 -0
- package/dist/worktree-NRQVJ2M4.js +28 -0
- package/dist/worktree-sweep-FBEHEPZO.js +21 -0
- package/package.json +1 -1
- package/release-notes.json +88 -88
package/dist/bin/mcp-sessions.js
CHANGED
|
@@ -45,10 +45,10 @@ async function collectSessions() {
|
|
|
45
45
|
const registryMap = new Map(registry.map((r) => [r.windowName, r]));
|
|
46
46
|
const taskMap = /* @__PURE__ */ new Map();
|
|
47
47
|
try {
|
|
48
|
-
const { fastDbInit } = await import("../fast-db-init-
|
|
48
|
+
const { fastDbInit } = await import("../fast-db-init-CM4XPET2.js");
|
|
49
49
|
await fastDbInit();
|
|
50
50
|
const { getClient } = await import("../lib/database.js");
|
|
51
|
-
const { sessionScopeFilter } = await import("../task-scope-
|
|
51
|
+
const { sessionScopeFilter } = await import("../task-scope-AWFGZWPM.js");
|
|
52
52
|
const client = getClient();
|
|
53
53
|
const scope = sessionScopeFilter();
|
|
54
54
|
const result = await client.execute({
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
fastDbInit
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-CXEY5CE2.js";
|
|
5
5
|
import {
|
|
6
6
|
formatOrchestrationMetrics,
|
|
7
7
|
getOrchestrationMetrics
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-G4VSF4DA.js";
|
|
9
|
+
import "../chunk-I3IW6AAX.js";
|
|
10
10
|
import "../chunk-2I23RPSI.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-2DWYR2LJ.js";
|
|
12
12
|
import "../chunk-PNQDP3OA.js";
|
|
13
13
|
import "../chunk-7HLWBYH7.js";
|
|
14
14
|
import "../chunk-FXU7JOXK.js";
|
package/dist/bin/scan-tasks.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
queryTaskRows
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-2QGG6GG3.js";
|
|
5
|
+
import "../chunk-PQG2IQNN.js";
|
|
6
6
|
import "../chunk-4JERP7NT.js";
|
|
7
7
|
import "../chunk-4FVVJ7ME.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-EYDBWKYI.js";
|
|
9
9
|
import "../chunk-KOO3J5PV.js";
|
|
10
10
|
import "../chunk-22TVSRQQ.js";
|
|
11
11
|
import "../chunk-SSTLTIF3.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-G4VSF4DA.js";
|
|
13
13
|
import "../chunk-QRTJNSKU.js";
|
|
14
14
|
import "../chunk-NGP6LSV2.js";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-SGUSCL3H.js";
|
|
16
16
|
import {
|
|
17
17
|
getSessionRuntime
|
|
18
18
|
} from "../chunk-CVYC6DUW.js";
|
|
19
19
|
import "../chunk-OPU3NYOO.js";
|
|
20
20
|
import "../chunk-GJV3WDWM.js";
|
|
21
21
|
import "../chunk-MP2AFCGL.js";
|
|
22
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-2MSLUPJA.js";
|
|
23
23
|
import "../chunk-HYZV25LY.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-I3IW6AAX.js";
|
|
25
25
|
import "../chunk-2I23RPSI.js";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-2DWYR2LJ.js";
|
|
27
27
|
import "../chunk-PNQDP3OA.js";
|
|
28
28
|
import "../chunk-7HLWBYH7.js";
|
|
29
29
|
import "../chunk-FXU7JOXK.js";
|
|
@@ -76,7 +76,7 @@ function checkMcpHealth() {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
async function scanFromDb(agentId, tmuxSession, projectName) {
|
|
79
|
-
const { fastDbInit } = await import("../fast-db-init-
|
|
79
|
+
const { fastDbInit } = await import("../fast-db-init-CM4XPET2.js");
|
|
80
80
|
try {
|
|
81
81
|
await fastDbInit();
|
|
82
82
|
} catch (err) {
|
package/dist/bin/setup.js
CHANGED
|
@@ -8,17 +8,17 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
disposeStore,
|
|
10
10
|
initStore
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-OQ336FHE.js";
|
|
12
12
|
import "../chunk-CHCA3ZM2.js";
|
|
13
13
|
import "../chunk-OTVEIJUQ.js";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-PUGKVPCC.js";
|
|
15
15
|
import "../chunk-Y25OJWOQ.js";
|
|
16
16
|
import "../chunk-MP2AFCGL.js";
|
|
17
17
|
import {
|
|
18
18
|
getClient
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-I3IW6AAX.js";
|
|
20
20
|
import "../chunk-2I23RPSI.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-2DWYR2LJ.js";
|
|
22
22
|
import "../chunk-PNQDP3OA.js";
|
|
23
23
|
import "../chunk-7HLWBYH7.js";
|
|
24
24
|
import "../chunk-FXU7JOXK.js";
|
package/dist/bin/stack-update.js
CHANGED
|
@@ -372,6 +372,7 @@ function parseArgs(args) {
|
|
|
372
372
|
noBootstrap: false,
|
|
373
373
|
skipHardening: false,
|
|
374
374
|
verifyManifestSignature: true,
|
|
375
|
+
requireManifestSignature: process.env.EXE_STACK_REQUIRE_SIGNATURE === "1" || process.env.EXE_STACK_REQUIRE_SIGNATURE === "true",
|
|
375
376
|
cleanupVolumes: false
|
|
376
377
|
};
|
|
377
378
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -431,6 +432,7 @@ function parseArgs(args) {
|
|
|
431
432
|
else if (arg === "--skip-hardening") opts.skipHardening = true;
|
|
432
433
|
else if (arg === "--cleanup-volumes") opts.cleanupVolumes = true;
|
|
433
434
|
else if (arg === "--no-verify-manifest-signature") opts.verifyManifestSignature = false;
|
|
435
|
+
else if (arg === "--require-manifest-signature") opts.requireManifestSignature = true;
|
|
434
436
|
else if (arg === "--dry-run") opts.dryRun = true;
|
|
435
437
|
else if (arg === "--verify-images") opts.verifyImages = true;
|
|
436
438
|
else if (arg === "--check") opts.check = true;
|
|
@@ -497,6 +499,9 @@ Options:
|
|
|
497
499
|
--skip-hardening Skip post-deploy host hardening (UFW firewall + SSH config)
|
|
498
500
|
--cleanup-volumes Detect and remove orphaned Docker volumes after a successful update
|
|
499
501
|
--no-verify-manifest-signature Explicitly allow unsigned stack manifests (break-glass only)
|
|
502
|
+
--require-manifest-signature Strict: fail unless EXE_STACK_PUBLIC_KEY is configured and the
|
|
503
|
+
manifest signature is valid (default is opt-in: warn + proceed when
|
|
504
|
+
no key is configured). Also enabled via EXE_STACK_REQUIRE_SIGNATURE=1
|
|
500
505
|
-y, --yes Non-interactive confirmation
|
|
501
506
|
`);
|
|
502
507
|
}
|
|
@@ -675,9 +680,13 @@ async function main(args = process.argv.slice(2)) {
|
|
|
675
680
|
printHostReport(hostReport);
|
|
676
681
|
if (!opts.check && !opts.dryRun) assertHostReadyForApply(hostReport);
|
|
677
682
|
}
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
683
|
+
const sigPolicy = resolveManifestSignaturePolicy({
|
|
684
|
+
verifyManifestSignature: opts.verifyManifestSignature,
|
|
685
|
+
requireManifestSignature: opts.requireManifestSignature,
|
|
686
|
+
hasPublicKey: !!opts.manifestPublicKey
|
|
687
|
+
});
|
|
688
|
+
if (sigPolicy.action === "throw") throw new Error(sigPolicy.message);
|
|
689
|
+
if (sigPolicy.action === "warn") console.warn(sigPolicy.message);
|
|
681
690
|
const manifest = await loadStackManifest(
|
|
682
691
|
opts.manifestRef,
|
|
683
692
|
void 0,
|
|
@@ -869,6 +878,20 @@ function existsForCli(filePath) {
|
|
|
869
878
|
return false;
|
|
870
879
|
}
|
|
871
880
|
}
|
|
881
|
+
function resolveManifestSignaturePolicy(input) {
|
|
882
|
+
if (!input.verifyManifestSignature) return { action: "proceed", message: "" };
|
|
883
|
+
if (input.hasPublicKey) return { action: "proceed", message: "" };
|
|
884
|
+
if (input.requireManifestSignature) {
|
|
885
|
+
return {
|
|
886
|
+
action: "throw",
|
|
887
|
+
message: "Stack manifest signature verification is required (strict mode: EXE_STACK_REQUIRE_SIGNATURE/--require-manifest-signature). Set EXE_STACK_PUBLIC_KEY/EXE_STACK_PUBLIC_KEY_FILE or pass --no-verify-manifest-signature explicitly."
|
|
888
|
+
};
|
|
889
|
+
}
|
|
890
|
+
return {
|
|
891
|
+
action: "warn",
|
|
892
|
+
message: "\u26A0\uFE0F Stack manifest signature NOT verified \u2014 no EXE_STACK_PUBLIC_KEY/EXE_STACK_PUBLIC_KEY_FILE configured. Proceeding. To enforce, configure a public key (or set EXE_STACK_REQUIRE_SIGNATURE=1 / pass --require-manifest-signature)."
|
|
893
|
+
};
|
|
894
|
+
}
|
|
872
895
|
if (isMainModule(import.meta.url) && (process.argv[1] ?? "").includes("stack-update")) {
|
|
873
896
|
main().catch((err) => {
|
|
874
897
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -889,5 +912,6 @@ ${border}`);
|
|
|
889
912
|
}
|
|
890
913
|
export {
|
|
891
914
|
parseArgs as parseStackUpdateArgs,
|
|
915
|
+
resolveManifestSignaturePolicy,
|
|
892
916
|
main as runStackUpdateCli
|
|
893
917
|
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getIdentity,
|
|
3
|
+
loadEmployeesSync
|
|
4
|
+
} from "./chunk-I3IW6AAX.js";
|
|
5
|
+
import "./chunk-2I23RPSI.js";
|
|
6
|
+
import "./chunk-2DWYR2LJ.js";
|
|
7
|
+
import {
|
|
8
|
+
getRoleCapabilities
|
|
9
|
+
} from "./chunk-PNQDP3OA.js";
|
|
10
|
+
import "./chunk-7HLWBYH7.js";
|
|
11
|
+
import "./chunk-FXU7JOXK.js";
|
|
12
|
+
import "./chunk-R36FAN53.js";
|
|
13
|
+
import "./chunk-LYH5HE24.js";
|
|
14
|
+
import "./chunk-MLKGABMK.js";
|
|
15
|
+
|
|
16
|
+
// src/lib/capability-cards.ts
|
|
17
|
+
function extractActions(identityBody) {
|
|
18
|
+
const actions = /* @__PURE__ */ new Set();
|
|
19
|
+
const boldMatches = identityBody.matchAll(/\*\*(\w[\w_]*)\*\*/g);
|
|
20
|
+
for (const m of boldMatches) {
|
|
21
|
+
const name = m[1];
|
|
22
|
+
if (name.length > 2 && !["The", "Non", "What", "How", "Why", "You", "Every", "Your"].includes(name)) {
|
|
23
|
+
actions.add(name);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return [...actions].sort();
|
|
27
|
+
}
|
|
28
|
+
function getCapabilityCard(agentId) {
|
|
29
|
+
const identity = getIdentity(agentId);
|
|
30
|
+
const role = identity?.frontmatter.role ?? "unknown";
|
|
31
|
+
const title = identity?.frontmatter.title ?? "Unknown";
|
|
32
|
+
const capabilities = getRoleCapabilities(role);
|
|
33
|
+
if (!identity && !capabilities) return null;
|
|
34
|
+
const availableActions = identity ? extractActions(identity.body) : [];
|
|
35
|
+
return {
|
|
36
|
+
agentId,
|
|
37
|
+
role,
|
|
38
|
+
title,
|
|
39
|
+
domains: capabilities?.domains ?? [],
|
|
40
|
+
tools: capabilities?.tools ?? [],
|
|
41
|
+
canDelegate: capabilities?.canDelegate ?? false,
|
|
42
|
+
canReview: capabilities?.canReview ?? false,
|
|
43
|
+
maxComplexity: capabilities?.maxComplexity ?? "low",
|
|
44
|
+
availableActions
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function getAllCapabilityCards() {
|
|
48
|
+
const employees = loadEmployeesSync();
|
|
49
|
+
const cards = [];
|
|
50
|
+
for (const emp of employees) {
|
|
51
|
+
const card = getCapabilityCard(emp.name);
|
|
52
|
+
if (card) cards.push(card);
|
|
53
|
+
}
|
|
54
|
+
return cards;
|
|
55
|
+
}
|
|
56
|
+
function findAgentForTask(taskDescription, cards) {
|
|
57
|
+
const allCards = cards ?? getAllCapabilityCards();
|
|
58
|
+
if (allCards.length === 0) return [];
|
|
59
|
+
const words = new Set(
|
|
60
|
+
taskDescription.toLowerCase().replace(/[^a-z0-9\s-]/g, "").split(/\s+/).filter((w) => w.length > 2)
|
|
61
|
+
);
|
|
62
|
+
const scored = [];
|
|
63
|
+
for (const card of allCards) {
|
|
64
|
+
let score = 0;
|
|
65
|
+
for (const domain of card.domains) {
|
|
66
|
+
const domainWords = domain.toLowerCase().split("-");
|
|
67
|
+
for (const dw of domainWords) {
|
|
68
|
+
if (words.has(dw)) score += 3;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
for (const tool of card.tools) {
|
|
72
|
+
const toolWords = tool.toLowerCase().split(/[_-]/);
|
|
73
|
+
for (const tw of toolWords) {
|
|
74
|
+
if (words.has(tw)) score += 2;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const roleWords = card.role.toLowerCase().split("-");
|
|
78
|
+
for (const rw of roleWords) {
|
|
79
|
+
if (words.has(rw)) score += 1;
|
|
80
|
+
}
|
|
81
|
+
if (score > 0) scored.push({ card, score });
|
|
82
|
+
}
|
|
83
|
+
return scored.sort((a, b) => b.score - a.score).map((s) => s.card);
|
|
84
|
+
}
|
|
85
|
+
export {
|
|
86
|
+
findAgentForTask,
|
|
87
|
+
getAllCapabilityCards,
|
|
88
|
+
getCapabilityCard
|
|
89
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CTX_FLOOR_PERCENT,
|
|
3
|
+
_resetLastRelaunchCache,
|
|
4
|
+
_resetPendingCapacityKills,
|
|
5
|
+
confirmCapacityKill,
|
|
6
|
+
createOrRefreshResumeTask,
|
|
7
|
+
extractContextPercent,
|
|
8
|
+
isAtCapacity,
|
|
9
|
+
isWithinRelaunchCooldown,
|
|
10
|
+
pollCapacityDead
|
|
11
|
+
} from "./chunk-2P5KBHJH.js";
|
|
12
|
+
import "./chunk-Y4QZXMCD.js";
|
|
13
|
+
import "./chunk-2QGG6GG3.js";
|
|
14
|
+
import "./chunk-PQG2IQNN.js";
|
|
15
|
+
import "./chunk-4JERP7NT.js";
|
|
16
|
+
import "./chunk-4FVVJ7ME.js";
|
|
17
|
+
import "./chunk-EYDBWKYI.js";
|
|
18
|
+
import "./chunk-KOO3J5PV.js";
|
|
19
|
+
import "./chunk-22TVSRQQ.js";
|
|
20
|
+
import "./chunk-SSTLTIF3.js";
|
|
21
|
+
import "./chunk-G4VSF4DA.js";
|
|
22
|
+
import "./chunk-QRTJNSKU.js";
|
|
23
|
+
import "./chunk-NGP6LSV2.js";
|
|
24
|
+
import "./chunk-SGUSCL3H.js";
|
|
25
|
+
import "./chunk-CVYC6DUW.js";
|
|
26
|
+
import "./chunk-OPU3NYOO.js";
|
|
27
|
+
import "./chunk-GJV3WDWM.js";
|
|
28
|
+
import "./chunk-MP2AFCGL.js";
|
|
29
|
+
import "./chunk-2MSLUPJA.js";
|
|
30
|
+
import "./chunk-HYZV25LY.js";
|
|
31
|
+
import "./chunk-I3IW6AAX.js";
|
|
32
|
+
import "./chunk-2I23RPSI.js";
|
|
33
|
+
import "./chunk-2DWYR2LJ.js";
|
|
34
|
+
import "./chunk-PNQDP3OA.js";
|
|
35
|
+
import "./chunk-7HLWBYH7.js";
|
|
36
|
+
import "./chunk-FXU7JOXK.js";
|
|
37
|
+
import "./chunk-YTKVJJSU.js";
|
|
38
|
+
import "./chunk-R36FAN53.js";
|
|
39
|
+
import "./chunk-LYH5HE24.js";
|
|
40
|
+
import "./chunk-MLKGABMK.js";
|
|
41
|
+
export {
|
|
42
|
+
CTX_FLOOR_PERCENT,
|
|
43
|
+
_resetLastRelaunchCache,
|
|
44
|
+
_resetPendingCapacityKills,
|
|
45
|
+
confirmCapacityKill,
|
|
46
|
+
createOrRefreshResumeTask,
|
|
47
|
+
extractContextPercent,
|
|
48
|
+
isAtCapacity,
|
|
49
|
+
isWithinRelaunchCooldown,
|
|
50
|
+
pollCapacityDead
|
|
51
|
+
};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lightweightSearch
|
|
3
|
+
} from "./chunk-POTMDICN.js";
|
|
4
|
+
import "./chunk-AB4PAQYK.js";
|
|
5
|
+
import "./chunk-OQ336FHE.js";
|
|
6
|
+
import "./chunk-CHCA3ZM2.js";
|
|
7
|
+
import "./chunk-OTVEIJUQ.js";
|
|
8
|
+
import "./chunk-PUGKVPCC.js";
|
|
9
|
+
import "./chunk-Y25OJWOQ.js";
|
|
10
|
+
import {
|
|
11
|
+
sessionScopeFilter,
|
|
12
|
+
strictSessionScopeFilter
|
|
13
|
+
} from "./chunk-2QGG6GG3.js";
|
|
14
|
+
import "./chunk-PQG2IQNN.js";
|
|
15
|
+
import "./chunk-4JERP7NT.js";
|
|
16
|
+
import "./chunk-4FVVJ7ME.js";
|
|
17
|
+
import "./chunk-EYDBWKYI.js";
|
|
18
|
+
import "./chunk-KOO3J5PV.js";
|
|
19
|
+
import "./chunk-22TVSRQQ.js";
|
|
20
|
+
import "./chunk-SSTLTIF3.js";
|
|
21
|
+
import "./chunk-G4VSF4DA.js";
|
|
22
|
+
import "./chunk-QRTJNSKU.js";
|
|
23
|
+
import "./chunk-NGP6LSV2.js";
|
|
24
|
+
import "./chunk-SGUSCL3H.js";
|
|
25
|
+
import "./chunk-CVYC6DUW.js";
|
|
26
|
+
import "./chunk-OPU3NYOO.js";
|
|
27
|
+
import "./chunk-GJV3WDWM.js";
|
|
28
|
+
import "./chunk-MP2AFCGL.js";
|
|
29
|
+
import "./chunk-2MSLUPJA.js";
|
|
30
|
+
import "./chunk-HYZV25LY.js";
|
|
31
|
+
import {
|
|
32
|
+
getClient
|
|
33
|
+
} from "./chunk-I3IW6AAX.js";
|
|
34
|
+
import "./chunk-2I23RPSI.js";
|
|
35
|
+
import "./chunk-2DWYR2LJ.js";
|
|
36
|
+
import "./chunk-PNQDP3OA.js";
|
|
37
|
+
import "./chunk-7HLWBYH7.js";
|
|
38
|
+
import "./chunk-FXU7JOXK.js";
|
|
39
|
+
import "./chunk-Z42MXYWW.js";
|
|
40
|
+
import "./chunk-YTKVJJSU.js";
|
|
41
|
+
import "./chunk-R36FAN53.js";
|
|
42
|
+
import "./chunk-LYH5HE24.js";
|
|
43
|
+
import "./chunk-MLKGABMK.js";
|
|
44
|
+
|
|
45
|
+
// src/lib/catchup-brief.ts
|
|
46
|
+
import { execSync } from "child_process";
|
|
47
|
+
var HEADER = "## Catchup Brief\nHere's what happened while you were offline:";
|
|
48
|
+
var DEFAULT_LOOKBACK_MS = 60 * 60 * 1e3;
|
|
49
|
+
var MAX_BRIEF_CHARS = 2e3;
|
|
50
|
+
var MAX_CHECKPOINT_CHARS = 500;
|
|
51
|
+
var MAX_MESSAGE_CHARS = 100;
|
|
52
|
+
function clipText(text, maxChars) {
|
|
53
|
+
if (text.length <= maxChars) return text;
|
|
54
|
+
if (maxChars <= 1) return "\u2026";
|
|
55
|
+
return `${text.slice(0, maxChars - 1).trimEnd()}\u2026`;
|
|
56
|
+
}
|
|
57
|
+
function clampSections(header, sections, maxChars) {
|
|
58
|
+
const bounded = [];
|
|
59
|
+
let remaining = Math.max(0, maxChars - header.length);
|
|
60
|
+
for (const section of sections) {
|
|
61
|
+
const separatorChars = 2;
|
|
62
|
+
if (remaining <= separatorChars) break;
|
|
63
|
+
remaining -= separatorChars;
|
|
64
|
+
if (section.length <= remaining) {
|
|
65
|
+
bounded.push(section);
|
|
66
|
+
remaining -= section.length;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const clipped = clipText(section, remaining);
|
|
70
|
+
if (clipped.trim().length > 0) bounded.push(clipped);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
return bounded;
|
|
74
|
+
}
|
|
75
|
+
async function buildCatchupBrief(agentId, projectName, cwd, sessionScope) {
|
|
76
|
+
const sections = [];
|
|
77
|
+
let lastTimestamp = new Date(Date.now() - DEFAULT_LOOKBACK_MS).toISOString();
|
|
78
|
+
try {
|
|
79
|
+
const checkpointMemories = await lightweightSearch(
|
|
80
|
+
"CONTEXT CHECKPOINT",
|
|
81
|
+
agentId,
|
|
82
|
+
{ projectName, limit: 1 }
|
|
83
|
+
);
|
|
84
|
+
const checkpoint = checkpointMemories[0];
|
|
85
|
+
if (checkpoint?.timestamp) {
|
|
86
|
+
lastTimestamp = checkpoint.timestamp;
|
|
87
|
+
}
|
|
88
|
+
if (checkpoint?.raw_text) {
|
|
89
|
+
sections.push(
|
|
90
|
+
`### Last Checkpoint
|
|
91
|
+
${clipText(checkpoint.raw_text, MAX_CHECKPOINT_CHARS)}`
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
} catch {
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const gitLog = execSync(
|
|
98
|
+
`git log --oneline --since=${JSON.stringify(lastTimestamp)} --format="%h %an: %s" | head -10`,
|
|
99
|
+
{ cwd, timeout: 3e3, encoding: "utf-8" }
|
|
100
|
+
).trim();
|
|
101
|
+
if (gitLog) {
|
|
102
|
+
sections.push(`### Git Activity Since You Left
|
|
103
|
+
\`\`\`
|
|
104
|
+
${gitLog}
|
|
105
|
+
\`\`\``);
|
|
106
|
+
}
|
|
107
|
+
} catch {
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const client = getClient();
|
|
111
|
+
const taskScope = sessionScopeFilter(sessionScope);
|
|
112
|
+
const taskChanges = await client.execute({
|
|
113
|
+
sql: `SELECT title, status, priority FROM tasks
|
|
114
|
+
WHERE assigned_to = ? AND project_name = ?
|
|
115
|
+
AND updated_at > ? AND status IN ('open', 'in_progress')${taskScope.sql}
|
|
116
|
+
ORDER BY priority ASC, updated_at DESC LIMIT 5`,
|
|
117
|
+
args: [agentId, projectName, lastTimestamp, ...taskScope.args]
|
|
118
|
+
});
|
|
119
|
+
if (taskChanges.rows.length > 0) {
|
|
120
|
+
const taskLines = taskChanges.rows.map((row) => {
|
|
121
|
+
const record = row;
|
|
122
|
+
return `- [${String(record.priority).toUpperCase()}] ${String(record.title)} (${String(record.status)})`;
|
|
123
|
+
}).join("\n");
|
|
124
|
+
sections.push(`### Your Task Queue
|
|
125
|
+
${taskLines}`);
|
|
126
|
+
}
|
|
127
|
+
} catch {
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const client = getClient();
|
|
131
|
+
const messageScope = strictSessionScopeFilter(sessionScope);
|
|
132
|
+
const messages = await client.execute({
|
|
133
|
+
sql: `SELECT from_agent, content, created_at FROM messages
|
|
134
|
+
WHERE target_agent = ? AND status = 'pending'${messageScope.sql}
|
|
135
|
+
ORDER BY created_at DESC LIMIT 3`,
|
|
136
|
+
args: [agentId, ...messageScope.args]
|
|
137
|
+
});
|
|
138
|
+
if (messages.rows.length > 0) {
|
|
139
|
+
const msgLines = messages.rows.map((row) => {
|
|
140
|
+
const record = row;
|
|
141
|
+
return `- From ${String(record.from_agent)}: ${clipText(String(record.content ?? ""), MAX_MESSAGE_CHARS)}`;
|
|
142
|
+
}).join("\n");
|
|
143
|
+
sections.push(`### Unread Messages
|
|
144
|
+
${msgLines}`);
|
|
145
|
+
}
|
|
146
|
+
} catch {
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const { getPendingProspective, markSurfaced } = await import("./prospective-memory-PC72YWLY.js");
|
|
150
|
+
const due = await getPendingProspective(agentId, { projectName, limit: 5 });
|
|
151
|
+
if (due.length > 0) {
|
|
152
|
+
const now = Date.now();
|
|
153
|
+
const lines = due.map((item) => {
|
|
154
|
+
const overdue = item.dueDate != null && new Date(item.dueDate).getTime() < now;
|
|
155
|
+
const when = item.dueDate ? `due ${item.dueDate}${overdue ? " \u2014 OVERDUE" : ""}` : "someday";
|
|
156
|
+
const recur = item.recurrence !== "once" ? `, ${item.recurrence}` : "";
|
|
157
|
+
return `- [P${item.priority}] ${clipText(item.content, MAX_CHECKPOINT_CHARS)} (${when}${recur})`;
|
|
158
|
+
});
|
|
159
|
+
sections.push(`### Reminders Due (Prospective Memory)
|
|
160
|
+
${lines.join("\n")}`);
|
|
161
|
+
try {
|
|
162
|
+
await markSurfaced(due.map((d) => d.id));
|
|
163
|
+
} catch {
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} catch {
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
header: HEADER,
|
|
170
|
+
sections: clampSections(HEADER, sections, MAX_BRIEF_CHARS)
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export {
|
|
174
|
+
buildCatchupBrief
|
|
175
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CC_NATIVE_ONLY_CUTOFF,
|
|
3
|
+
CC_SAFE_PINNED_VERSION,
|
|
4
|
+
ccNativeBinaryWarningLine,
|
|
5
|
+
compareSemver,
|
|
6
|
+
detectCcNativeBinary
|
|
7
|
+
} from "./chunk-3REXR56D.js";
|
|
8
|
+
import "./chunk-MLKGABMK.js";
|
|
9
|
+
export {
|
|
10
|
+
CC_NATIVE_ONLY_CUTOFF,
|
|
11
|
+
CC_SAFE_PINNED_VERSION,
|
|
12
|
+
ccNativeBinaryWarningLine,
|
|
13
|
+
compareSemver,
|
|
14
|
+
detectCcNativeBinary
|
|
15
|
+
};
|