@askexenow/exe-os 0.9.60 → 0.9.61

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 (73) hide show
  1. package/dist/bin/backfill-conversations.js +72 -5
  2. package/dist/bin/backfill-responses.js +72 -5
  3. package/dist/bin/backfill-vectors.js +72 -5
  4. package/dist/bin/cc-doctor.js +376 -0
  5. package/dist/bin/cleanup-stale-review-tasks.js +72 -5
  6. package/dist/bin/cli.js +157 -55
  7. package/dist/bin/customer-readiness.js +33 -0
  8. package/dist/bin/exe-agent.js +1 -1
  9. package/dist/bin/exe-assign.js +72 -5
  10. package/dist/bin/exe-boot.js +78 -11
  11. package/dist/bin/exe-call.js +1 -1
  12. package/dist/bin/exe-dispatch.js +72 -5
  13. package/dist/bin/exe-doctor.js +72 -5
  14. package/dist/bin/exe-export-behaviors.js +72 -5
  15. package/dist/bin/exe-forget.js +72 -5
  16. package/dist/bin/exe-gateway.js +72 -5
  17. package/dist/bin/exe-heartbeat.js +72 -5
  18. package/dist/bin/exe-kill.js +72 -5
  19. package/dist/bin/exe-launch-agent.js +72 -5
  20. package/dist/bin/exe-link.js +74 -7
  21. package/dist/bin/exe-new-employee.js +48 -19
  22. package/dist/bin/exe-pending-messages.js +72 -5
  23. package/dist/bin/exe-pending-notifications.js +72 -5
  24. package/dist/bin/exe-pending-reviews.js +72 -5
  25. package/dist/bin/exe-rename.js +72 -5
  26. package/dist/bin/exe-review.js +72 -5
  27. package/dist/bin/exe-search.js +72 -5
  28. package/dist/bin/exe-session-cleanup.js +72 -5
  29. package/dist/bin/exe-start-codex.js +115 -18
  30. package/dist/bin/exe-start-opencode.js +93 -7
  31. package/dist/bin/exe-status.js +72 -5
  32. package/dist/bin/exe-team.js +72 -5
  33. package/dist/bin/git-sweep.js +72 -5
  34. package/dist/bin/graph-backfill.js +72 -5
  35. package/dist/bin/graph-export.js +72 -5
  36. package/dist/bin/install.js +56 -31
  37. package/dist/bin/intercom-check.js +72 -5
  38. package/dist/bin/pre-build-guard.js +98 -0
  39. package/dist/bin/scan-tasks.js +72 -5
  40. package/dist/bin/setup.js +75 -8
  41. package/dist/bin/shard-migrate.js +72 -5
  42. package/dist/gateway/index.js +78 -11
  43. package/dist/hooks/bug-report-worker.js +72 -5
  44. package/dist/hooks/codex-stop-task-finalizer.js +72 -5
  45. package/dist/hooks/commit-complete.js +72 -5
  46. package/dist/hooks/error-recall.js +72 -5
  47. package/dist/hooks/ingest.js +72 -5
  48. package/dist/hooks/instructions-loaded.js +72 -5
  49. package/dist/hooks/notification.js +72 -5
  50. package/dist/hooks/post-compact.js +72 -5
  51. package/dist/hooks/post-tool-combined.js +72 -5
  52. package/dist/hooks/pre-compact.js +72 -5
  53. package/dist/hooks/pre-tool-use.js +72 -5
  54. package/dist/hooks/prompt-submit.js +72 -5
  55. package/dist/hooks/session-end.js +72 -5
  56. package/dist/hooks/session-start.js +72 -5
  57. package/dist/hooks/stop.js +72 -5
  58. package/dist/hooks/subagent-stop.js +72 -5
  59. package/dist/hooks/summary-worker.js +78 -11
  60. package/dist/index.js +78 -11
  61. package/dist/lib/cloud-sync.js +74 -7
  62. package/dist/lib/database.js +68 -1
  63. package/dist/lib/db.js +68 -1
  64. package/dist/lib/device-registry.js +68 -1
  65. package/dist/lib/employee-templates.js +1 -1
  66. package/dist/lib/exe-daemon.js +103 -26
  67. package/dist/lib/hybrid-search.js +72 -5
  68. package/dist/lib/schedules.js +72 -5
  69. package/dist/lib/store.js +72 -5
  70. package/dist/mcp/server.js +103 -26
  71. package/dist/runtime/index.js +72 -5
  72. package/dist/tui/App.js +80 -13
  73. package/package.json +1 -1
package/dist/tui/App.js CHANGED
@@ -3315,7 +3315,7 @@ async function ensureSchema() {
3315
3315
  ON session_kills(agent_id);
3316
3316
  `);
3317
3317
  await client.execute(`
3318
- CREATE TABLE IF NOT EXISTS global_procedures (
3318
+ CREATE TABLE IF NOT EXISTS company_procedures (
3319
3319
  id TEXT PRIMARY KEY,
3320
3320
  title TEXT NOT NULL,
3321
3321
  content TEXT NOT NULL,
@@ -3326,6 +3326,73 @@ async function ensureSchema() {
3326
3326
  updated_at TEXT NOT NULL
3327
3327
  )
3328
3328
  `);
3329
+ const legacyProcedureObject = await client.execute({
3330
+ sql: "SELECT type FROM sqlite_master WHERE name = 'global_procedures'",
3331
+ args: []
3332
+ });
3333
+ const legacyProcedureType = legacyProcedureObject.rows[0]?.type == null ? null : String(legacyProcedureObject.rows[0].type);
3334
+ if (legacyProcedureType === "table") {
3335
+ await client.execute(`
3336
+ INSERT OR IGNORE INTO company_procedures
3337
+ (id, title, content, priority, domain, active, created_at, updated_at)
3338
+ SELECT id, title, content, priority, domain, active, created_at, updated_at
3339
+ FROM global_procedures
3340
+ `);
3341
+ await client.executeMultiple(`
3342
+ CREATE TRIGGER IF NOT EXISTS global_procedures_mirror_insert
3343
+ AFTER INSERT ON global_procedures
3344
+ BEGIN
3345
+ INSERT OR IGNORE INTO company_procedures
3346
+ (id, title, content, priority, domain, active, created_at, updated_at)
3347
+ VALUES
3348
+ (NEW.id, NEW.title, NEW.content, NEW.priority, NEW.domain, NEW.active, NEW.created_at, NEW.updated_at);
3349
+ END;
3350
+
3351
+ CREATE TRIGGER IF NOT EXISTS global_procedures_mirror_update
3352
+ AFTER UPDATE ON global_procedures
3353
+ BEGIN
3354
+ UPDATE company_procedures
3355
+ SET title = NEW.title,
3356
+ content = NEW.content,
3357
+ priority = NEW.priority,
3358
+ domain = NEW.domain,
3359
+ active = NEW.active,
3360
+ created_at = NEW.created_at,
3361
+ updated_at = NEW.updated_at
3362
+ WHERE id = OLD.id;
3363
+ END;
3364
+ `);
3365
+ } else {
3366
+ await client.execute(`
3367
+ CREATE VIEW IF NOT EXISTS global_procedures AS
3368
+ SELECT id, title, content, priority, domain, active, created_at, updated_at
3369
+ FROM company_procedures
3370
+ `);
3371
+ await client.executeMultiple(`
3372
+ CREATE TRIGGER IF NOT EXISTS global_procedures_insert
3373
+ INSTEAD OF INSERT ON global_procedures
3374
+ BEGIN
3375
+ INSERT INTO company_procedures
3376
+ (id, title, content, priority, domain, active, created_at, updated_at)
3377
+ VALUES
3378
+ (NEW.id, NEW.title, NEW.content, NEW.priority, NEW.domain, NEW.active, NEW.created_at, NEW.updated_at);
3379
+ END;
3380
+
3381
+ CREATE TRIGGER IF NOT EXISTS global_procedures_update
3382
+ INSTEAD OF UPDATE ON global_procedures
3383
+ BEGIN
3384
+ UPDATE company_procedures
3385
+ SET title = NEW.title,
3386
+ content = NEW.content,
3387
+ priority = NEW.priority,
3388
+ domain = NEW.domain,
3389
+ active = NEW.active,
3390
+ created_at = NEW.created_at,
3391
+ updated_at = NEW.updated_at
3392
+ WHERE id = OLD.id;
3393
+ END;
3394
+ `);
3395
+ }
3329
3396
  await client.executeMultiple(`
3330
3397
  CREATE TABLE IF NOT EXISTS conversations (
3331
3398
  id TEXT PRIMARY KEY,
@@ -8732,7 +8799,7 @@ var init_platform_procedures = __esm({
8732
8799
  title: "MCP tools \u2014 advanced (triggers, skills, orchestration)",
8733
8800
  domain: "tool-use",
8734
8801
  priority: "p1",
8735
- content: "create_trigger: set up a scheduled recurring agent job (cron). list_triggers: view active triggers. load_skill: load a slash-command skill dynamically. apply_starter_pack: import a pre-built behavior + identity pack for a role. export_orchestration: export full org state (tasks, behaviors, identities) as portable JSON. import_orchestration: import org state into a new instance. deploy_client: deploy a customer client instance. query_company_brain: unified RAG query across all company knowledge. create_reminder: set a text reminder (shown in boot brief). list_reminders: view pending reminders. complete_reminder: mark a reminder done. global_procedure: manage customer-owned company procedures (Layer 0; actions: store, list, deactivate). Legacy aliases: store_global_procedure, list_global_procedures, deactivate_global_procedure."
8802
+ content: "create_trigger: set up a scheduled recurring agent job (cron). list_triggers: view active triggers. load_skill: load a slash-command skill dynamically. apply_starter_pack: import a pre-built behavior + identity pack for a role. export_orchestration: export full org state (tasks, behaviors, identities) as portable JSON. import_orchestration: import org state into a new instance. deploy_client: deploy a customer client instance. query_company_brain: unified RAG query across all company knowledge. create_reminder: set a text reminder (shown in boot brief). list_reminders: view pending reminders. complete_reminder: mark a reminder done. company_procedure: manage customer-owned company procedures (Layer 0; actions: store, list, deactivate). Legacy aliases: global_procedure, store_global_procedure, list_global_procedures, deactivate_global_procedure."
8736
8803
  }
8737
8804
  ];
8738
8805
  PLATFORM_PROCEDURE_TITLES = new Set(
@@ -8753,7 +8820,7 @@ import { randomUUID as randomUUID3 } from "crypto";
8753
8820
  async function loadGlobalProcedures() {
8754
8821
  const client = getClient();
8755
8822
  const result = await client.execute({
8756
- sql: "SELECT * FROM global_procedures WHERE active = 1 ORDER BY priority ASC, created_at ASC",
8823
+ sql: "SELECT * FROM company_procedures WHERE active = 1 ORDER BY priority ASC, created_at ASC",
8757
8824
  args: []
8758
8825
  });
8759
8826
  const allRows = result.rows;
@@ -8782,7 +8849,7 @@ async function storeGlobalProcedure(input) {
8782
8849
  const now = (/* @__PURE__ */ new Date()).toISOString();
8783
8850
  const client = getClient();
8784
8851
  await client.execute({
8785
- sql: `INSERT INTO global_procedures (id, title, content, priority, domain, active, created_at, updated_at)
8852
+ sql: `INSERT INTO company_procedures (id, title, content, priority, domain, active, created_at, updated_at)
8786
8853
  VALUES (?, ?, ?, ?, ?, 1, ?, ?)`,
8787
8854
  args: [id, input.title, input.content, input.priority ?? "p0", input.domain ?? null, now, now]
8788
8855
  });
@@ -8793,7 +8860,7 @@ async function deactivateGlobalProcedure(id) {
8793
8860
  const now = (/* @__PURE__ */ new Date()).toISOString();
8794
8861
  const client = getClient();
8795
8862
  const result = await client.execute({
8796
- sql: "UPDATE global_procedures SET active = 0, updated_at = ? WHERE id = ?",
8863
+ sql: "UPDATE company_procedures SET active = 0, updated_at = ? WHERE id = ?",
8797
8864
  args: [now, id]
8798
8865
  });
8799
8866
  await loadGlobalProcedures();
@@ -8812,16 +8879,16 @@ ${p.content}`).join("\n\n");
8812
8879
  }
8813
8880
  });
8814
8881
 
8815
- // src/gateway/providers/anthropic.ts
8882
+ // src/lib/providers/anthropic.ts
8816
8883
  import Anthropic from "@anthropic-ai/sdk";
8817
8884
  var AnthropicProvider;
8818
8885
  var init_anthropic = __esm({
8819
- "src/gateway/providers/anthropic.ts"() {
8886
+ "src/lib/providers/anthropic.ts"() {
8820
8887
  "use strict";
8821
8888
  AnthropicProvider = class {
8822
8889
  name;
8823
- client;
8824
8890
  defaultModel;
8891
+ client;
8825
8892
  constructor(name, config) {
8826
8893
  this.name = name;
8827
8894
  this.defaultModel = config.defaultModel ?? "claude-sonnet-4-20250514";
@@ -8914,17 +8981,17 @@ var init_anthropic = __esm({
8914
8981
  }
8915
8982
  });
8916
8983
 
8917
- // src/gateway/providers/openai-compat.ts
8984
+ // src/lib/providers/openai-compat.ts
8918
8985
  import OpenAI from "openai";
8919
8986
  import { randomUUID as randomUUID4 } from "crypto";
8920
8987
  var OpenAICompatProvider;
8921
8988
  var init_openai_compat = __esm({
8922
- "src/gateway/providers/openai-compat.ts"() {
8989
+ "src/lib/providers/openai-compat.ts"() {
8923
8990
  "use strict";
8924
8991
  OpenAICompatProvider = class {
8925
8992
  name;
8926
- client;
8927
8993
  defaultModel;
8994
+ client;
8928
8995
  constructor(name, config) {
8929
8996
  this.name = name;
8930
8997
  this.defaultModel = config.defaultModel ?? "gpt-4o";
@@ -9056,7 +9123,7 @@ var init_openai_compat = __esm({
9056
9123
  }
9057
9124
  });
9058
9125
 
9059
- // src/gateway/providers/factory.ts
9126
+ // src/lib/providers/factory.ts
9060
9127
  var factory_exports = {};
9061
9128
  __export(factory_exports, {
9062
9129
  OPENCODE_ANTHROPIC_MODELS: () => OPENCODE_ANTHROPIC_MODELS,
@@ -9107,7 +9174,7 @@ function createProvider(opts) {
9107
9174
  }
9108
9175
  var OPENCODE_BASE_URL, OPENCODE_ANTHROPIC_MODELS, OPENCODE_OPENAI_MODELS, OPENAI_BASE_URL;
9109
9176
  var init_factory = __esm({
9110
- "src/gateway/providers/factory.ts"() {
9177
+ "src/lib/providers/factory.ts"() {
9111
9178
  "use strict";
9112
9179
  init_anthropic();
9113
9180
  init_openai_compat();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.60",
3
+ "version": "0.9.61",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",