@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.
Files changed (103) hide show
  1. package/deploy/compose/docker-compose.yml +3 -3
  2. package/dist/bin/age-ontology-load.js +8 -2
  3. package/dist/bin/agentic-ontology-backfill.js +29 -0
  4. package/dist/bin/agentic-reflection-backfill.js +29 -0
  5. package/dist/bin/agentic-semantic-label.js +29 -0
  6. package/dist/bin/backfill-conversations.js +30 -0
  7. package/dist/bin/backfill-responses.js +30 -0
  8. package/dist/bin/backfill-vectors.js +30 -0
  9. package/dist/bin/bulk-sync-postgres.js +47 -1
  10. package/dist/bin/cc-doctor.js +3 -2
  11. package/dist/bin/cleanup-stale-review-tasks.js +30 -0
  12. package/dist/bin/cli.js +357 -19
  13. package/dist/bin/exe-agent.js +19 -0
  14. package/dist/bin/exe-assign.js +30 -0
  15. package/dist/bin/exe-boot.js +157 -4
  16. package/dist/bin/exe-call.js +20 -0
  17. package/dist/bin/exe-cloud.js +156 -3
  18. package/dist/bin/exe-dispatch.js +30 -1
  19. package/dist/bin/exe-doctor.js +30 -0
  20. package/dist/bin/exe-export-behaviors.js +29 -0
  21. package/dist/bin/exe-forget.js +30 -0
  22. package/dist/bin/exe-gateway.js +150 -35
  23. package/dist/bin/exe-healthcheck.js +2 -1
  24. package/dist/bin/exe-heartbeat.js +30 -0
  25. package/dist/bin/exe-kill.js +29 -0
  26. package/dist/bin/exe-launch-agent.js +29 -0
  27. package/dist/bin/exe-new-employee.js +37 -4
  28. package/dist/bin/exe-pending-messages.js +29 -0
  29. package/dist/bin/exe-pending-notifications.js +30 -0
  30. package/dist/bin/exe-pending-reviews.js +30 -0
  31. package/dist/bin/exe-rename.js +30 -0
  32. package/dist/bin/exe-review.js +30 -0
  33. package/dist/bin/exe-search.js +30 -0
  34. package/dist/bin/exe-session-cleanup.js +30 -1
  35. package/dist/bin/exe-settings.js +3 -0
  36. package/dist/bin/exe-start-codex.js +31 -2
  37. package/dist/bin/exe-start-opencode.js +31 -2
  38. package/dist/bin/exe-status.js +30 -0
  39. package/dist/bin/exe-team.js +30 -0
  40. package/dist/bin/git-sweep.js +30 -1
  41. package/dist/bin/graph-backfill.js +29 -0
  42. package/dist/bin/graph-export.js +29 -0
  43. package/dist/bin/graph-layer-benchmark.js +9 -1
  44. package/dist/bin/install.js +9 -0
  45. package/dist/bin/intercom-check.js +31 -1
  46. package/dist/bin/list-providers.js +1 -0
  47. package/dist/bin/postgres-agentic-reflection-backfill.js +7 -1
  48. package/dist/bin/postgres-agentic-semantic-backfill.js +7 -1
  49. package/dist/bin/registry-proxy.js +1 -0
  50. package/dist/bin/scan-tasks.js +31 -1
  51. package/dist/bin/setup.js +165 -9
  52. package/dist/bin/shard-migrate.js +29 -0
  53. package/dist/bin/stack-update.js +24 -7
  54. package/dist/bin/update.js +5 -0
  55. package/dist/gateway/index.js +30 -1
  56. package/dist/hooks/bug-report-worker.js +30 -1
  57. package/dist/hooks/codex-stop-task-finalizer.js +30 -1
  58. package/dist/hooks/commit-complete.js +30 -1
  59. package/dist/hooks/error-recall.js +29 -0
  60. package/dist/hooks/ingest.js +29 -0
  61. package/dist/hooks/instructions-loaded.js +29 -0
  62. package/dist/hooks/notification.js +29 -0
  63. package/dist/hooks/post-compact.js +29 -0
  64. package/dist/hooks/post-tool-combined.js +29 -0
  65. package/dist/hooks/pre-compact.js +30 -1
  66. package/dist/hooks/pre-tool-use.js +29 -0
  67. package/dist/hooks/prompt-submit.js +30 -1
  68. package/dist/hooks/session-end.js +30 -1
  69. package/dist/hooks/session-start.js +29 -0
  70. package/dist/hooks/stop.js +29 -0
  71. package/dist/hooks/subagent-stop.js +29 -0
  72. package/dist/hooks/summary-worker.js +155 -3
  73. package/dist/index.js +30 -1
  74. package/dist/lib/cloud-sync.js +136 -2
  75. package/dist/lib/consolidation.js +1 -0
  76. package/dist/lib/database.js +11 -0
  77. package/dist/lib/db.js +11 -0
  78. package/dist/lib/device-registry.js +11 -0
  79. package/dist/lib/employee-templates.js +19 -0
  80. package/dist/lib/exe-daemon.js +1455 -208
  81. package/dist/lib/hybrid-search.js +29 -0
  82. package/dist/lib/identity-templates.js +6 -2
  83. package/dist/lib/identity.js +1 -0
  84. package/dist/lib/messaging.js +2 -1
  85. package/dist/lib/reminders.js +1 -0
  86. package/dist/lib/schedules.js +29 -0
  87. package/dist/lib/skill-learning.js +1 -0
  88. package/dist/lib/store.js +29 -0
  89. package/dist/lib/tasks.js +2 -1
  90. package/dist/lib/tmux-routing.js +2 -1
  91. package/dist/lib/token-spend.js +1 -0
  92. package/dist/mcp/server.js +1278 -165
  93. package/dist/mcp/tools/complete-reminder.js +1 -0
  94. package/dist/mcp/tools/create-reminder.js +1 -0
  95. package/dist/mcp/tools/create-task.js +8 -3
  96. package/dist/mcp/tools/deactivate-behavior.js +1 -0
  97. package/dist/mcp/tools/list-reminders.js +1 -0
  98. package/dist/mcp/tools/list-tasks.js +1 -0
  99. package/dist/mcp/tools/send-message.js +2 -1
  100. package/dist/mcp/tools/update-task.js +2 -1
  101. package/dist/runtime/index.js +30 -1
  102. package/dist/tui/App.js +30 -1
  103. 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. **Present the brief**: Give the founder a concise status report:
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
- 5. Then ask: "What's the priority?"
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
 
@@ -119,6 +119,7 @@ import path4 from "path";
119
119
  import { createHash } from "crypto";
120
120
 
121
121
  // src/lib/database.ts
122
+ import { chmodSync as chmodSync2 } from "fs";
122
123
  import { createClient } from "@libsql/client";
123
124
 
124
125
  // src/lib/employees.ts
@@ -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) {
@@ -115,6 +115,7 @@ var init_config = __esm({
115
115
  import crypto from "crypto";
116
116
 
117
117
  // src/lib/database.ts
118
+ import { chmodSync as chmodSync2 } from "fs";
118
119
  import { createClient } from "@libsql/client";
119
120
 
120
121
  // src/lib/employees.ts
@@ -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",
@@ -878,6 +878,7 @@ var init_embedder = __esm({
878
878
  import crypto3 from "crypto";
879
879
 
880
880
  // src/lib/database.ts
881
+ import { chmodSync as chmodSync2 } from "fs";
881
882
  import { createClient } from "@libsql/client";
882
883
 
883
884
  // src/lib/employees.ts
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) {
@@ -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) {
@@ -119,6 +119,7 @@ import path4 from "path";
119
119
  import os4 from "os";
120
120
 
121
121
  // src/lib/database.ts
122
+ import { chmodSync as chmodSync2 } from "fs";
122
123
  import { createClient } from "@libsql/client";
123
124
 
124
125
  // src/lib/employees.ts