@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.
- package/dist/bin/backfill-conversations.js +72 -5
- package/dist/bin/backfill-responses.js +72 -5
- package/dist/bin/backfill-vectors.js +72 -5
- package/dist/bin/cc-doctor.js +376 -0
- package/dist/bin/cleanup-stale-review-tasks.js +72 -5
- package/dist/bin/cli.js +157 -55
- package/dist/bin/customer-readiness.js +33 -0
- package/dist/bin/exe-agent.js +1 -1
- package/dist/bin/exe-assign.js +72 -5
- package/dist/bin/exe-boot.js +78 -11
- package/dist/bin/exe-call.js +1 -1
- package/dist/bin/exe-dispatch.js +72 -5
- package/dist/bin/exe-doctor.js +72 -5
- package/dist/bin/exe-export-behaviors.js +72 -5
- package/dist/bin/exe-forget.js +72 -5
- package/dist/bin/exe-gateway.js +72 -5
- package/dist/bin/exe-heartbeat.js +72 -5
- package/dist/bin/exe-kill.js +72 -5
- package/dist/bin/exe-launch-agent.js +72 -5
- package/dist/bin/exe-link.js +74 -7
- package/dist/bin/exe-new-employee.js +48 -19
- package/dist/bin/exe-pending-messages.js +72 -5
- package/dist/bin/exe-pending-notifications.js +72 -5
- package/dist/bin/exe-pending-reviews.js +72 -5
- package/dist/bin/exe-rename.js +72 -5
- package/dist/bin/exe-review.js +72 -5
- package/dist/bin/exe-search.js +72 -5
- package/dist/bin/exe-session-cleanup.js +72 -5
- package/dist/bin/exe-start-codex.js +115 -18
- package/dist/bin/exe-start-opencode.js +93 -7
- package/dist/bin/exe-status.js +72 -5
- package/dist/bin/exe-team.js +72 -5
- package/dist/bin/git-sweep.js +72 -5
- package/dist/bin/graph-backfill.js +72 -5
- package/dist/bin/graph-export.js +72 -5
- package/dist/bin/install.js +56 -31
- package/dist/bin/intercom-check.js +72 -5
- package/dist/bin/pre-build-guard.js +98 -0
- package/dist/bin/scan-tasks.js +72 -5
- package/dist/bin/setup.js +75 -8
- package/dist/bin/shard-migrate.js +72 -5
- package/dist/gateway/index.js +78 -11
- package/dist/hooks/bug-report-worker.js +72 -5
- package/dist/hooks/codex-stop-task-finalizer.js +72 -5
- package/dist/hooks/commit-complete.js +72 -5
- package/dist/hooks/error-recall.js +72 -5
- package/dist/hooks/ingest.js +72 -5
- package/dist/hooks/instructions-loaded.js +72 -5
- package/dist/hooks/notification.js +72 -5
- package/dist/hooks/post-compact.js +72 -5
- package/dist/hooks/post-tool-combined.js +72 -5
- package/dist/hooks/pre-compact.js +72 -5
- package/dist/hooks/pre-tool-use.js +72 -5
- package/dist/hooks/prompt-submit.js +72 -5
- package/dist/hooks/session-end.js +72 -5
- package/dist/hooks/session-start.js +72 -5
- package/dist/hooks/stop.js +72 -5
- package/dist/hooks/subagent-stop.js +72 -5
- package/dist/hooks/summary-worker.js +78 -11
- package/dist/index.js +78 -11
- package/dist/lib/cloud-sync.js +74 -7
- package/dist/lib/database.js +68 -1
- package/dist/lib/db.js +68 -1
- package/dist/lib/device-registry.js +68 -1
- package/dist/lib/employee-templates.js +1 -1
- package/dist/lib/exe-daemon.js +103 -26
- package/dist/lib/hybrid-search.js +72 -5
- package/dist/lib/schedules.js +72 -5
- package/dist/lib/store.js +72 -5
- package/dist/mcp/server.js +103 -26
- package/dist/runtime/index.js +72 -5
- package/dist/tui/App.js +80 -13
- 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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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.
|
|
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",
|