@askexenow/exe-os 0.9.86 → 0.9.88
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/docker-compose.yml +3 -3
- package/dist/bin/age-ontology-load.js +8 -2
- package/dist/bin/agentic-ontology-backfill.js +29 -0
- package/dist/bin/agentic-reflection-backfill.js +29 -0
- package/dist/bin/agentic-semantic-label.js +29 -0
- package/dist/bin/backfill-conversations.js +30 -0
- package/dist/bin/backfill-responses.js +30 -0
- package/dist/bin/backfill-vectors.js +30 -0
- package/dist/bin/bulk-sync-postgres.js +47 -1
- package/dist/bin/cc-doctor.js +3 -2
- package/dist/bin/cleanup-stale-review-tasks.js +30 -0
- package/dist/bin/cli.js +357 -19
- package/dist/bin/exe-agent.js +19 -0
- package/dist/bin/exe-assign.js +30 -0
- package/dist/bin/exe-boot.js +157 -4
- package/dist/bin/exe-call.js +20 -0
- package/dist/bin/exe-cloud.js +156 -3
- package/dist/bin/exe-dispatch.js +30 -1
- package/dist/bin/exe-doctor.js +30 -0
- package/dist/bin/exe-export-behaviors.js +29 -0
- package/dist/bin/exe-forget.js +30 -0
- package/dist/bin/exe-gateway.js +150 -35
- package/dist/bin/exe-healthcheck.js +2 -1
- package/dist/bin/exe-heartbeat.js +30 -0
- package/dist/bin/exe-kill.js +29 -0
- package/dist/bin/exe-launch-agent.js +29 -0
- package/dist/bin/exe-new-employee.js +37 -4
- package/dist/bin/exe-pending-messages.js +29 -0
- package/dist/bin/exe-pending-notifications.js +30 -0
- package/dist/bin/exe-pending-reviews.js +30 -0
- package/dist/bin/exe-rename.js +30 -0
- package/dist/bin/exe-review.js +30 -0
- package/dist/bin/exe-search.js +30 -0
- package/dist/bin/exe-session-cleanup.js +30 -1
- package/dist/bin/exe-settings.js +3 -0
- package/dist/bin/exe-start-codex.js +31 -2
- package/dist/bin/exe-start-opencode.js +31 -2
- package/dist/bin/exe-status.js +30 -0
- package/dist/bin/exe-team.js +30 -0
- package/dist/bin/git-sweep.js +30 -1
- package/dist/bin/graph-backfill.js +29 -0
- package/dist/bin/graph-export.js +29 -0
- package/dist/bin/graph-layer-benchmark.js +9 -1
- package/dist/bin/install.js +9 -0
- package/dist/bin/intercom-check.js +31 -1
- package/dist/bin/list-providers.js +1 -0
- package/dist/bin/postgres-agentic-reflection-backfill.js +7 -1
- package/dist/bin/postgres-agentic-semantic-backfill.js +7 -1
- package/dist/bin/registry-proxy.js +1 -0
- package/dist/bin/scan-tasks.js +31 -1
- package/dist/bin/setup.js +165 -9
- package/dist/bin/shard-migrate.js +29 -0
- package/dist/bin/stack-update.js +24 -7
- package/dist/bin/update.js +5 -0
- package/dist/gateway/index.js +30 -1
- package/dist/hooks/bug-report-worker.js +30 -1
- package/dist/hooks/codex-stop-task-finalizer.js +30 -1
- package/dist/hooks/commit-complete.js +30 -1
- package/dist/hooks/error-recall.js +29 -0
- package/dist/hooks/ingest.js +29 -0
- package/dist/hooks/instructions-loaded.js +29 -0
- package/dist/hooks/notification.js +29 -0
- package/dist/hooks/post-compact.js +29 -0
- package/dist/hooks/post-tool-combined.js +29 -0
- package/dist/hooks/pre-compact.js +30 -1
- package/dist/hooks/pre-tool-use.js +29 -0
- package/dist/hooks/prompt-submit.js +30 -1
- package/dist/hooks/session-end.js +30 -1
- package/dist/hooks/session-start.js +29 -0
- package/dist/hooks/stop.js +29 -0
- package/dist/hooks/subagent-stop.js +29 -0
- package/dist/hooks/summary-worker.js +155 -3
- package/dist/index.js +30 -1
- package/dist/lib/cloud-sync.js +136 -2
- package/dist/lib/consolidation.js +1 -0
- package/dist/lib/database.js +11 -0
- package/dist/lib/db.js +11 -0
- package/dist/lib/device-registry.js +11 -0
- package/dist/lib/employee-templates.js +19 -0
- package/dist/lib/exe-daemon.js +1455 -208
- package/dist/lib/hybrid-search.js +29 -0
- package/dist/lib/identity-templates.js +6 -2
- package/dist/lib/identity.js +1 -0
- package/dist/lib/messaging.js +2 -1
- package/dist/lib/reminders.js +1 -0
- package/dist/lib/schedules.js +29 -0
- package/dist/lib/skill-learning.js +1 -0
- package/dist/lib/store.js +29 -0
- package/dist/lib/tasks.js +2 -1
- package/dist/lib/tmux-routing.js +2 -1
- package/dist/lib/token-spend.js +1 -0
- package/dist/mcp/server.js +1278 -165
- package/dist/mcp/tools/complete-reminder.js +1 -0
- package/dist/mcp/tools/create-reminder.js +1 -0
- package/dist/mcp/tools/create-task.js +8 -3
- package/dist/mcp/tools/deactivate-behavior.js +1 -0
- package/dist/mcp/tools/list-reminders.js +1 -0
- package/dist/mcp/tools/list-tasks.js +1 -0
- package/dist/mcp/tools/send-message.js +2 -1
- package/dist/mcp/tools/update-task.js +2 -1
- package/dist/runtime/index.js +30 -1
- package/dist/tui/App.js +30 -1
- package/package.json +2 -2
|
@@ -1700,6 +1700,7 @@ __export(database_exports, {
|
|
|
1700
1700
|
isInitialized: () => isInitialized,
|
|
1701
1701
|
setExternalClient: () => setExternalClient
|
|
1702
1702
|
});
|
|
1703
|
+
import { chmodSync as chmodSync2 } from "fs";
|
|
1703
1704
|
import { createClient } from "@libsql/client";
|
|
1704
1705
|
async function initDatabase(config) {
|
|
1705
1706
|
if (_walCheckpointTimer) {
|
|
@@ -1741,6 +1742,16 @@ async function initDatabase(config) {
|
|
|
1741
1742
|
if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
|
|
1742
1743
|
_adapterClient = await createPrismaDbAdapter(_resilientClient);
|
|
1743
1744
|
}
|
|
1745
|
+
try {
|
|
1746
|
+
chmodSync2(config.dbPath, 384);
|
|
1747
|
+
for (const suffix of ["-wal", "-shm"]) {
|
|
1748
|
+
try {
|
|
1749
|
+
chmodSync2(config.dbPath + suffix, 384);
|
|
1750
|
+
} catch {
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
} catch {
|
|
1754
|
+
}
|
|
1744
1755
|
}
|
|
1745
1756
|
function isInitialized() {
|
|
1746
1757
|
return _adapterClient !== null || _client !== null;
|
|
@@ -4152,6 +4163,24 @@ var init_platform_procedures = __esm({
|
|
|
4152
4163
|
priority: "p0",
|
|
4153
4164
|
content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
|
|
4154
4165
|
},
|
|
4166
|
+
{
|
|
4167
|
+
title: "Bug report status check \u2014 surface available fixes on boot",
|
|
4168
|
+
domain: "support",
|
|
4169
|
+
priority: "p1",
|
|
4170
|
+
content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
|
|
4171
|
+
},
|
|
4172
|
+
{
|
|
4173
|
+
title: "Feature request triage \u2014 upstream feature vs local customization",
|
|
4174
|
+
domain: "support",
|
|
4175
|
+
priority: "p0",
|
|
4176
|
+
content: "When an agent or founder identifies a desired capability that exe-os does not yet provide, the COO (or equivalent coordinator) must decide: is this a local customization (identity, behavior, procedure, config, branding, workflow preference that can be configured in customer-owned layers) or an upstream feature request (a platform capability that requires changes to exe-os code, shipped via npm update)? Local customizations: implement immediately using store_behavior, update_identity, company_procedure, or config changes. Upstream features: use create_feature_request to submit to AskExe. Include use case, business impact, and current workaround. Do NOT ask the founder for permission to file a feature request \u2014 file it proactively when the need is clear."
|
|
4177
|
+
},
|
|
4178
|
+
{
|
|
4179
|
+
title: "Feature request status check \u2014 surface shipped features on boot",
|
|
4180
|
+
domain: "support",
|
|
4181
|
+
priority: "p1",
|
|
4182
|
+
content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
|
|
4183
|
+
},
|
|
4155
4184
|
// --- Operations ---
|
|
4156
4185
|
{
|
|
4157
4186
|
title: "Managers must supervise deployed workers",
|
|
@@ -72,12 +72,14 @@ On EVERY new conversation, before doing anything else:
|
|
|
72
72
|
1. **Memory scan**: Run recall_my_memory with broad queries \u2014 "project", "client", "pipeline", "campaign", "deal", "decision", "blocker". Summarize what you find.
|
|
73
73
|
2. **Task scan**: Run list_tasks to see what's open, in progress, blocked, or needs review across all employees.
|
|
74
74
|
3. **Team check**: Run ask_team_memory for recent activity from CTO/CMO/engineers.
|
|
75
|
-
4. **
|
|
75
|
+
4. **Bug fix check** (one-time, never repeat): Call list_my_bug_reports to see if AskExe has fixed any previously filed bugs. If any have status "fixed" with a fixed_version, tell the founder: "\u{1F527} N bug fix(es) available \u2014 run \`exe-os update\` to get version X.Y.Z." Skip silently if none or if the call fails.
|
|
76
|
+
5. **Present the brief**: Give the founder a concise status report:
|
|
76
77
|
- What's active and progressing
|
|
77
78
|
- What's blocked and needs attention
|
|
78
79
|
- What decisions are pending
|
|
80
|
+
- Available bug fixes (from step 4, if any)
|
|
79
81
|
- What you recommend doing next
|
|
80
|
-
|
|
82
|
+
6. Then ask: "What's the priority?"
|
|
81
83
|
|
|
82
84
|
If this is your FIRST ever conversation (few or no prior memories):
|
|
83
85
|
- Search more broadly: "product", "SEO", "meeting", "strategy", "revenue"
|
|
@@ -97,6 +99,8 @@ Never say "I have no memories" without first searching broadly. Your memory may
|
|
|
97
99
|
- **get_identity** \u2014 read any agent's identity for coordination
|
|
98
100
|
- **set_agent_config** \u2014 view or change which tool (Claude Code, Codex, OpenCode) and model each agent uses. Call with no args to show all agents' current settings. Call with agent_id + runtime + model to change.
|
|
99
101
|
- **send_message** \u2014 direct intercom to employees
|
|
102
|
+
- **create_bug_report** \u2014 file a bug when you encounter an Exe OS platform issue
|
|
103
|
+
- **list_my_bug_reports** \u2014 check status of filed bugs (boot check: surface available fixes to founder)
|
|
100
104
|
${PLAN_MODE_COMPAT}
|
|
101
105
|
## Completion Workflow
|
|
102
106
|
|
package/dist/lib/identity.js
CHANGED
package/dist/lib/messaging.js
CHANGED
|
@@ -212,6 +212,7 @@ var init_memory = __esm({
|
|
|
212
212
|
});
|
|
213
213
|
|
|
214
214
|
// src/lib/database.ts
|
|
215
|
+
import { chmodSync as chmodSync2 } from "fs";
|
|
215
216
|
import { createClient } from "@libsql/client";
|
|
216
217
|
function getClient() {
|
|
217
218
|
if (!_adapterClient) {
|
|
@@ -551,7 +552,7 @@ function readQueue() {
|
|
|
551
552
|
function writeQueue(queue) {
|
|
552
553
|
ensureDir();
|
|
553
554
|
const tmp = `${QUEUE_PATH}.tmp`;
|
|
554
|
-
writeFileSync3(tmp, JSON.stringify(queue, null, 2));
|
|
555
|
+
writeFileSync3(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
|
|
555
556
|
renameSync3(tmp, QUEUE_PATH);
|
|
556
557
|
}
|
|
557
558
|
function queueIntercom(targetSession, reason) {
|
package/dist/lib/reminders.js
CHANGED
package/dist/lib/schedules.js
CHANGED
|
@@ -1486,6 +1486,7 @@ __export(database_exports, {
|
|
|
1486
1486
|
isInitialized: () => isInitialized,
|
|
1487
1487
|
setExternalClient: () => setExternalClient
|
|
1488
1488
|
});
|
|
1489
|
+
import { chmodSync as chmodSync2 } from "fs";
|
|
1489
1490
|
import { createClient } from "@libsql/client";
|
|
1490
1491
|
async function initDatabase(config) {
|
|
1491
1492
|
if (_walCheckpointTimer) {
|
|
@@ -1527,6 +1528,16 @@ async function initDatabase(config) {
|
|
|
1527
1528
|
if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
|
|
1528
1529
|
_adapterClient = await createPrismaDbAdapter(_resilientClient);
|
|
1529
1530
|
}
|
|
1531
|
+
try {
|
|
1532
|
+
chmodSync2(config.dbPath, 384);
|
|
1533
|
+
for (const suffix of ["-wal", "-shm"]) {
|
|
1534
|
+
try {
|
|
1535
|
+
chmodSync2(config.dbPath + suffix, 384);
|
|
1536
|
+
} catch {
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
} catch {
|
|
1540
|
+
}
|
|
1530
1541
|
}
|
|
1531
1542
|
function isInitialized() {
|
|
1532
1543
|
return _adapterClient !== null || _client !== null;
|
|
@@ -3381,6 +3392,24 @@ var init_platform_procedures = __esm({
|
|
|
3381
3392
|
priority: "p0",
|
|
3382
3393
|
content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
|
|
3383
3394
|
},
|
|
3395
|
+
{
|
|
3396
|
+
title: "Bug report status check \u2014 surface available fixes on boot",
|
|
3397
|
+
domain: "support",
|
|
3398
|
+
priority: "p1",
|
|
3399
|
+
content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
|
|
3400
|
+
},
|
|
3401
|
+
{
|
|
3402
|
+
title: "Feature request triage \u2014 upstream feature vs local customization",
|
|
3403
|
+
domain: "support",
|
|
3404
|
+
priority: "p0",
|
|
3405
|
+
content: "When an agent or founder identifies a desired capability that exe-os does not yet provide, the COO (or equivalent coordinator) must decide: is this a local customization (identity, behavior, procedure, config, branding, workflow preference that can be configured in customer-owned layers) or an upstream feature request (a platform capability that requires changes to exe-os code, shipped via npm update)? Local customizations: implement immediately using store_behavior, update_identity, company_procedure, or config changes. Upstream features: use create_feature_request to submit to AskExe. Include use case, business impact, and current workaround. Do NOT ask the founder for permission to file a feature request \u2014 file it proactively when the need is clear."
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
title: "Feature request status check \u2014 surface shipped features on boot",
|
|
3409
|
+
domain: "support",
|
|
3410
|
+
priority: "p1",
|
|
3411
|
+
content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
|
|
3412
|
+
},
|
|
3384
3413
|
// --- Operations ---
|
|
3385
3414
|
{
|
|
3386
3415
|
title: "Managers must supervise deployed workers",
|
package/dist/lib/store.js
CHANGED
|
@@ -1486,6 +1486,7 @@ __export(database_exports, {
|
|
|
1486
1486
|
isInitialized: () => isInitialized,
|
|
1487
1487
|
setExternalClient: () => setExternalClient
|
|
1488
1488
|
});
|
|
1489
|
+
import { chmodSync as chmodSync2 } from "fs";
|
|
1489
1490
|
import { createClient } from "@libsql/client";
|
|
1490
1491
|
async function initDatabase(config) {
|
|
1491
1492
|
if (_walCheckpointTimer) {
|
|
@@ -1527,6 +1528,16 @@ async function initDatabase(config) {
|
|
|
1527
1528
|
if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
|
|
1528
1529
|
_adapterClient = await createPrismaDbAdapter(_resilientClient);
|
|
1529
1530
|
}
|
|
1531
|
+
try {
|
|
1532
|
+
chmodSync2(config.dbPath, 384);
|
|
1533
|
+
for (const suffix of ["-wal", "-shm"]) {
|
|
1534
|
+
try {
|
|
1535
|
+
chmodSync2(config.dbPath + suffix, 384);
|
|
1536
|
+
} catch {
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
} catch {
|
|
1540
|
+
}
|
|
1530
1541
|
}
|
|
1531
1542
|
function isInitialized() {
|
|
1532
1543
|
return _adapterClient !== null || _client !== null;
|
|
@@ -3381,6 +3392,24 @@ var init_platform_procedures = __esm({
|
|
|
3381
3392
|
priority: "p0",
|
|
3382
3393
|
content: "When an agent encounters a suspected Exe OS bug, update breakage, MCP/tool failure, installer issue, memory/orchestration defect, or customer-local patch need, it MUST use create_bug_report. Do this before or alongside any local workaround so the report reaches AskExe support directly via the customer's license. Do NOT ask the founder for permission to file a required bug report. If create_bug_report is deferred/lazy-loaded, load it and call it. If it is unavailable in the live MCP surface, report 'create_bug_report unavailable in this session' and save a local report in exe/output \u2014 never claim the tool does not exist unless the live MCP surface was checked. If upstream delivery fails, call support_test (MCP) and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues; only ask the founder to run `exe-os support test` if MCP is disconnected/unavailable. Classify first: upstream_bug = reproducible exe-os/platform defect; customer_customization = identity, behavior, procedure, config, branding, workflow preference that belongs in customer-owned layers; emergency_hotfix = temporary local patch. For upstream bugs/emergency hotfixes include version, repro steps, expected/actual, files changed, workaround, and local diff summary. Avoid permanent platform-code patches unless founder approves; if a hotfix is unavoidable, document it in the bug report and re-check after npm update."
|
|
3383
3394
|
},
|
|
3395
|
+
{
|
|
3396
|
+
title: "Bug report status check \u2014 surface available fixes on boot",
|
|
3397
|
+
domain: "support",
|
|
3398
|
+
priority: "p1",
|
|
3399
|
+
content: "Once per session (COO boot only, never repeat), call list_my_bug_reports to check if any previously filed bug reports have been fixed by AskExe. If any report has status 'fixed' with a fixed_version, surface it to the founder immediately: '\u{1F527} N bug fix(es) available \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no reports exist or none are fixed, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
|
|
3400
|
+
},
|
|
3401
|
+
{
|
|
3402
|
+
title: "Feature request triage \u2014 upstream feature vs local customization",
|
|
3403
|
+
domain: "support",
|
|
3404
|
+
priority: "p0",
|
|
3405
|
+
content: "When an agent or founder identifies a desired capability that exe-os does not yet provide, the COO (or equivalent coordinator) must decide: is this a local customization (identity, behavior, procedure, config, branding, workflow preference that can be configured in customer-owned layers) or an upstream feature request (a platform capability that requires changes to exe-os code, shipped via npm update)? Local customizations: implement immediately using store_behavior, update_identity, company_procedure, or config changes. Upstream features: use create_feature_request to submit to AskExe. Include use case, business impact, and current workaround. Do NOT ask the founder for permission to file a feature request \u2014 file it proactively when the need is clear."
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
title: "Feature request status check \u2014 surface shipped features on boot",
|
|
3409
|
+
domain: "support",
|
|
3410
|
+
priority: "p1",
|
|
3411
|
+
content: "Once per session (COO boot only, never repeat), call list_my_feature_requests to check if any previously filed feature requests have been shipped by AskExe. If any request has status 'shipped' with a shipped_version, surface it to the founder immediately: '\u{1F680} N feature(s) shipped \u2014 run exe-os update to get version X.Y.Z'. This is a one-time check at boot, not a recurring poll. If no requests exist or none are shipped, skip silently. If the MCP tool is unavailable or the network call fails, skip silently \u2014 this is informational, not blocking."
|
|
3412
|
+
},
|
|
3384
3413
|
// --- Operations ---
|
|
3385
3414
|
{
|
|
3386
3415
|
title: "Managers must supervise deployed workers",
|
package/dist/lib/tasks.js
CHANGED
|
@@ -439,6 +439,7 @@ var init_memory = __esm({
|
|
|
439
439
|
});
|
|
440
440
|
|
|
441
441
|
// src/lib/database.ts
|
|
442
|
+
import { chmodSync as chmodSync2 } from "fs";
|
|
442
443
|
import { createClient } from "@libsql/client";
|
|
443
444
|
function getClient() {
|
|
444
445
|
if (!_adapterClient) {
|
|
@@ -853,7 +854,7 @@ function readQueue() {
|
|
|
853
854
|
function writeQueue(queue) {
|
|
854
855
|
ensureDir();
|
|
855
856
|
const tmp = `${QUEUE_PATH}.tmp`;
|
|
856
|
-
writeFileSync4(tmp, JSON.stringify(queue, null, 2));
|
|
857
|
+
writeFileSync4(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
|
|
857
858
|
renameSync3(tmp, QUEUE_PATH);
|
|
858
859
|
}
|
|
859
860
|
function queueIntercom(targetSession, reason) {
|
package/dist/lib/tmux-routing.js
CHANGED
|
@@ -711,7 +711,7 @@ function readQueue() {
|
|
|
711
711
|
function writeQueue(queue) {
|
|
712
712
|
ensureDir();
|
|
713
713
|
const tmp = `${QUEUE_PATH}.tmp`;
|
|
714
|
-
writeFileSync3(tmp, JSON.stringify(queue, null, 2));
|
|
714
|
+
writeFileSync3(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
|
|
715
715
|
renameSync2(tmp, QUEUE_PATH);
|
|
716
716
|
}
|
|
717
717
|
function queueIntercom(targetSession, reason) {
|
|
@@ -919,6 +919,7 @@ var init_memory = __esm({
|
|
|
919
919
|
});
|
|
920
920
|
|
|
921
921
|
// src/lib/database.ts
|
|
922
|
+
import { chmodSync as chmodSync2 } from "fs";
|
|
922
923
|
import { createClient } from "@libsql/client";
|
|
923
924
|
function getClient() {
|
|
924
925
|
if (!_adapterClient) {
|
package/dist/lib/token-spend.js
CHANGED