@askexenow/exe-os 0.9.77 → 0.9.78
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/agentic-ontology-backfill.js +2 -2
- package/dist/bin/agentic-reflection-backfill.js +2 -2
- package/dist/bin/agentic-semantic-label.js +2 -2
- package/dist/bin/backfill-conversations.js +2 -2
- package/dist/bin/backfill-responses.js +2 -2
- package/dist/bin/backfill-vectors.js +2 -2
- package/dist/bin/bulk-sync-postgres.js +2 -2
- package/dist/bin/cleanup-stale-review-tasks.js +2 -2
- package/dist/bin/cli.js +759 -524
- package/dist/bin/customer-readiness.js +19 -0
- package/dist/bin/exe-agent.js +2 -2
- package/dist/bin/exe-assign.js +2 -2
- package/dist/bin/exe-boot.js +2 -2
- package/dist/bin/exe-call.js +2 -2
- package/dist/bin/exe-cloud.js +2 -2
- package/dist/bin/exe-dispatch.js +2 -2
- package/dist/bin/exe-doctor.js +2 -2
- package/dist/bin/exe-export-behaviors.js +2 -2
- package/dist/bin/exe-forget.js +2 -2
- package/dist/bin/exe-gateway.js +158 -16
- package/dist/bin/exe-heartbeat.js +2 -2
- package/dist/bin/exe-kill.js +2 -2
- package/dist/bin/exe-launch-agent.js +2 -2
- package/dist/bin/exe-new-employee.js +2 -2
- package/dist/bin/exe-pending-messages.js +2 -2
- package/dist/bin/exe-pending-notifications.js +2 -2
- package/dist/bin/exe-pending-reviews.js +2 -2
- package/dist/bin/exe-rename.js +2 -2
- package/dist/bin/exe-review.js +2 -2
- package/dist/bin/exe-search.js +2 -2
- package/dist/bin/exe-session-cleanup.js +2 -2
- package/dist/bin/exe-start-codex.js +2 -2
- package/dist/bin/exe-start-opencode.js +2 -2
- package/dist/bin/exe-status.js +2 -2
- package/dist/bin/exe-support.js +461 -0
- package/dist/bin/exe-team.js +2 -2
- package/dist/bin/git-sweep.js +2 -2
- package/dist/bin/graph-backfill.js +2 -2
- package/dist/bin/graph-export.js +2 -2
- package/dist/bin/intercom-check.js +2 -2
- package/dist/bin/scan-tasks.js +2 -2
- package/dist/bin/setup.js +3 -2
- package/dist/bin/shard-migrate.js +2 -2
- package/dist/bin/update.js +9 -0
- package/dist/gateway/index.js +2 -2
- package/dist/hooks/bug-report-worker.js +2 -2
- package/dist/hooks/codex-stop-task-finalizer.js +2 -2
- package/dist/hooks/commit-complete.js +2 -2
- package/dist/hooks/error-recall.js +2 -2
- package/dist/hooks/ingest.js +2 -2
- package/dist/hooks/instructions-loaded.js +2 -2
- package/dist/hooks/notification.js +2 -2
- package/dist/hooks/post-compact.js +2 -2
- package/dist/hooks/post-tool-combined.js +2 -2
- package/dist/hooks/pre-compact.js +2 -2
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/prompt-submit.js +2 -2
- package/dist/hooks/session-end.js +2 -2
- package/dist/hooks/session-start.js +2 -2
- package/dist/hooks/stop.js +2 -2
- package/dist/hooks/subagent-stop.js +2 -2
- package/dist/hooks/summary-worker.js +2 -2
- package/dist/index.js +2 -2
- package/dist/lib/employee-templates.js +2 -2
- package/dist/lib/exe-daemon.js +28 -16
- package/dist/lib/hybrid-search.js +2 -2
- package/dist/lib/schedules.js +2 -2
- package/dist/lib/store.js +2 -2
- package/dist/mcp/server.js +27 -15
- package/dist/runtime/index.js +2 -2
- package/dist/tui/App.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/bin/exe-support.ts
|
|
4
|
+
import { mkdirSync as mkdirSync3, readFileSync as readFileSync3, unlinkSync, writeFileSync as writeFileSync2 } from "fs";
|
|
5
|
+
import path3 from "path";
|
|
6
|
+
import { randomUUID as randomUUID2 } from "crypto";
|
|
7
|
+
|
|
8
|
+
// src/lib/config.ts
|
|
9
|
+
import { readFile, writeFile } from "fs/promises";
|
|
10
|
+
import { readFileSync, existsSync as existsSync2, renameSync } from "fs";
|
|
11
|
+
import path from "path";
|
|
12
|
+
import os from "os";
|
|
13
|
+
|
|
14
|
+
// src/lib/secure-files.ts
|
|
15
|
+
import { chmodSync, existsSync, mkdirSync } from "fs";
|
|
16
|
+
import { chmod, mkdir } from "fs/promises";
|
|
17
|
+
var PRIVATE_DIR_MODE = 448;
|
|
18
|
+
var PRIVATE_FILE_MODE = 384;
|
|
19
|
+
async function ensurePrivateDir(dirPath) {
|
|
20
|
+
await mkdir(dirPath, { recursive: true, mode: PRIVATE_DIR_MODE });
|
|
21
|
+
try {
|
|
22
|
+
await chmod(dirPath, PRIVATE_DIR_MODE);
|
|
23
|
+
} catch {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function enforcePrivateFile(filePath) {
|
|
27
|
+
try {
|
|
28
|
+
await chmod(filePath, PRIVATE_FILE_MODE);
|
|
29
|
+
} catch {
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/lib/config.ts
|
|
34
|
+
function resolveDataDir() {
|
|
35
|
+
if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
|
|
36
|
+
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
37
|
+
const newDir = path.join(os.homedir(), ".exe-os");
|
|
38
|
+
const legacyDir = path.join(os.homedir(), ".exe-mem");
|
|
39
|
+
if (!existsSync2(newDir) && existsSync2(legacyDir)) {
|
|
40
|
+
try {
|
|
41
|
+
renameSync(legacyDir, newDir);
|
|
42
|
+
process.stderr.write(`[exe-os] Migrated data directory: ~/.exe-mem \u2192 ~/.exe-os
|
|
43
|
+
`);
|
|
44
|
+
} catch {
|
|
45
|
+
return legacyDir;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return newDir;
|
|
49
|
+
}
|
|
50
|
+
var EXE_AI_DIR = resolveDataDir();
|
|
51
|
+
var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
52
|
+
var MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
53
|
+
var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
54
|
+
var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
55
|
+
var CURRENT_CONFIG_VERSION = 1;
|
|
56
|
+
var DEFAULT_CONFIG = {
|
|
57
|
+
config_version: CURRENT_CONFIG_VERSION,
|
|
58
|
+
dbPath: DB_PATH,
|
|
59
|
+
modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
60
|
+
embeddingDim: 1024,
|
|
61
|
+
batchSize: 20,
|
|
62
|
+
flushIntervalMs: 1e4,
|
|
63
|
+
autoIngestion: true,
|
|
64
|
+
autoRetrieval: true,
|
|
65
|
+
searchMode: "hybrid",
|
|
66
|
+
hookSearchMode: "hybrid",
|
|
67
|
+
fileGrepEnabled: true,
|
|
68
|
+
splashEffect: true,
|
|
69
|
+
consolidationEnabled: true,
|
|
70
|
+
consolidationIntervalMs: 6 * 60 * 60 * 1e3,
|
|
71
|
+
consolidationModel: "claude-haiku-4-5-20251001",
|
|
72
|
+
consolidationMaxCallsPerRun: 20,
|
|
73
|
+
selfQueryRouter: true,
|
|
74
|
+
selfQueryModel: "claude-haiku-4-5-20251001",
|
|
75
|
+
rerankerEnabled: true,
|
|
76
|
+
scalingRoadmap: {
|
|
77
|
+
rerankerAutoTrigger: {
|
|
78
|
+
enabled: true,
|
|
79
|
+
broadQueryMinCardinality: 5e4,
|
|
80
|
+
fetchTopK: 200,
|
|
81
|
+
returnTopK: 20
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
graphRagEnabled: true,
|
|
85
|
+
wikiEnabled: false,
|
|
86
|
+
wikiUrl: "",
|
|
87
|
+
wikiApiKey: "",
|
|
88
|
+
wikiSyncIntervalMs: 30 * 60 * 1e3,
|
|
89
|
+
wikiWorkspaceMapping: {},
|
|
90
|
+
wikiAutoUpdate: true,
|
|
91
|
+
wikiAutoUpdateThreshold: 0.5,
|
|
92
|
+
wikiAutoUpdateCreateNew: true,
|
|
93
|
+
skillLearning: true,
|
|
94
|
+
skillThreshold: 3,
|
|
95
|
+
skillModel: "claude-haiku-4-5-20251001",
|
|
96
|
+
exeHeartbeat: {
|
|
97
|
+
enabled: true,
|
|
98
|
+
intervalSeconds: 60,
|
|
99
|
+
staleInProgressThresholdHours: 2
|
|
100
|
+
},
|
|
101
|
+
sessionLifecycle: {
|
|
102
|
+
idleKillEnabled: true,
|
|
103
|
+
idleKillTicksRequired: 3,
|
|
104
|
+
idleKillIntercomAckWindowMs: 1e4,
|
|
105
|
+
maxAutoInstances: 10
|
|
106
|
+
},
|
|
107
|
+
autoUpdate: {
|
|
108
|
+
checkOnBoot: true,
|
|
109
|
+
autoInstall: false,
|
|
110
|
+
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
111
|
+
},
|
|
112
|
+
support: {
|
|
113
|
+
bugReportEndpoint: "https://askexe.com/v1/support/bug-reports"
|
|
114
|
+
},
|
|
115
|
+
orchestration: {
|
|
116
|
+
phase: "phase_1_coo",
|
|
117
|
+
phaseSetBy: "default"
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
function migrateLegacyConfig(raw) {
|
|
121
|
+
if ("r2" in raw) {
|
|
122
|
+
process.stderr.write(
|
|
123
|
+
"[exe-os] Warning: config.json contains deprecated 'r2' field from v1.0. R2 sync has been replaced in v1.1. The 'r2' field will be ignored.\n"
|
|
124
|
+
);
|
|
125
|
+
delete raw.r2;
|
|
126
|
+
}
|
|
127
|
+
if ("syncIntervalMs" in raw) {
|
|
128
|
+
delete raw.syncIntervalMs;
|
|
129
|
+
}
|
|
130
|
+
return raw;
|
|
131
|
+
}
|
|
132
|
+
var CONFIG_MIGRATIONS = [
|
|
133
|
+
{
|
|
134
|
+
from: 0,
|
|
135
|
+
to: 1,
|
|
136
|
+
migrate: (cfg) => {
|
|
137
|
+
cfg.config_version = 1;
|
|
138
|
+
return cfg;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
function migrateConfig(raw) {
|
|
143
|
+
const fromVersion = typeof raw.config_version === "number" ? raw.config_version : 0;
|
|
144
|
+
let currentVersion = fromVersion;
|
|
145
|
+
let migrated = false;
|
|
146
|
+
if (currentVersion > CURRENT_CONFIG_VERSION) {
|
|
147
|
+
return { config: raw, migrated: false, fromVersion };
|
|
148
|
+
}
|
|
149
|
+
for (const migration of CONFIG_MIGRATIONS) {
|
|
150
|
+
if (currentVersion === migration.from && migration.to <= CURRENT_CONFIG_VERSION) {
|
|
151
|
+
raw = migration.migrate(raw);
|
|
152
|
+
currentVersion = migration.to;
|
|
153
|
+
migrated = true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return { config: raw, migrated, fromVersion };
|
|
157
|
+
}
|
|
158
|
+
function normalizeScalingRoadmap(raw) {
|
|
159
|
+
const defaultAuto = DEFAULT_CONFIG.scalingRoadmap.rerankerAutoTrigger;
|
|
160
|
+
const userRoadmap = raw.scalingRoadmap ?? {};
|
|
161
|
+
const userAuto = userRoadmap.rerankerAutoTrigger ?? {};
|
|
162
|
+
if (userAuto.enabled === void 0 && raw.rerankerEnabled !== void 0) {
|
|
163
|
+
userAuto.enabled = raw.rerankerEnabled;
|
|
164
|
+
}
|
|
165
|
+
raw.scalingRoadmap = {
|
|
166
|
+
...userRoadmap,
|
|
167
|
+
rerankerAutoTrigger: { ...defaultAuto, ...userAuto }
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function normalizeSessionLifecycle(raw) {
|
|
171
|
+
const defaultSL = DEFAULT_CONFIG.sessionLifecycle;
|
|
172
|
+
const userSL = raw.sessionLifecycle ?? {};
|
|
173
|
+
raw.sessionLifecycle = { ...defaultSL, ...userSL };
|
|
174
|
+
}
|
|
175
|
+
function normalizeAutoUpdate(raw) {
|
|
176
|
+
const defaultAU = DEFAULT_CONFIG.autoUpdate;
|
|
177
|
+
const userAU = raw.autoUpdate ?? {};
|
|
178
|
+
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
179
|
+
}
|
|
180
|
+
function normalizeOrchestration(raw) {
|
|
181
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
182
|
+
const userOrg = raw.orchestration ?? {};
|
|
183
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
184
|
+
}
|
|
185
|
+
async function loadConfig() {
|
|
186
|
+
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
187
|
+
await ensurePrivateDir(dir);
|
|
188
|
+
const configPath = path.join(dir, "config.json");
|
|
189
|
+
if (!existsSync2(configPath)) {
|
|
190
|
+
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
191
|
+
}
|
|
192
|
+
const raw = await readFile(configPath, "utf-8");
|
|
193
|
+
try {
|
|
194
|
+
let parsed = JSON.parse(raw);
|
|
195
|
+
parsed = migrateLegacyConfig(parsed);
|
|
196
|
+
const { config: migratedCfg, migrated, fromVersion } = migrateConfig(parsed);
|
|
197
|
+
if (migrated) {
|
|
198
|
+
process.stderr.write(`[exe-os] Config migrated from v${fromVersion} to v${migratedCfg.config_version}
|
|
199
|
+
`);
|
|
200
|
+
try {
|
|
201
|
+
await writeFile(configPath, JSON.stringify(migratedCfg, null, 2) + "\n");
|
|
202
|
+
await enforcePrivateFile(configPath);
|
|
203
|
+
} catch {
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
normalizeScalingRoadmap(migratedCfg);
|
|
207
|
+
normalizeSessionLifecycle(migratedCfg);
|
|
208
|
+
normalizeAutoUpdate(migratedCfg);
|
|
209
|
+
normalizeOrchestration(migratedCfg);
|
|
210
|
+
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
211
|
+
if (config.dbPath.startsWith("~")) {
|
|
212
|
+
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
213
|
+
}
|
|
214
|
+
const envDbPath = path.join(dir, "memories.db");
|
|
215
|
+
if (process.env.EXE_OS_DIR && config.dbPath !== envDbPath && !existsSync2(config.dbPath) && existsSync2(envDbPath)) {
|
|
216
|
+
config.dbPath = envDbPath;
|
|
217
|
+
}
|
|
218
|
+
return config;
|
|
219
|
+
} catch {
|
|
220
|
+
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// src/lib/license.ts
|
|
225
|
+
import { readFileSync as readFileSync2, writeFileSync, existsSync as existsSync3, mkdirSync as mkdirSync2 } from "fs";
|
|
226
|
+
import { randomUUID } from "crypto";
|
|
227
|
+
import { createRequire } from "module";
|
|
228
|
+
import { pathToFileURL } from "url";
|
|
229
|
+
import os2 from "os";
|
|
230
|
+
import path2 from "path";
|
|
231
|
+
import { jwtVerify, importSPKI } from "jose";
|
|
232
|
+
var LICENSE_PATH = path2.join(EXE_AI_DIR, "license.key");
|
|
233
|
+
var CACHE_PATH = path2.join(EXE_AI_DIR, "license-cache.json");
|
|
234
|
+
var DEVICE_ID_PATH = path2.join(EXE_AI_DIR, "device-id");
|
|
235
|
+
function loadLicense() {
|
|
236
|
+
try {
|
|
237
|
+
if (!existsSync3(LICENSE_PATH)) return null;
|
|
238
|
+
return readFileSync2(LICENSE_PATH, "utf8").trim();
|
|
239
|
+
} catch {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function readCachedLicenseToken() {
|
|
244
|
+
try {
|
|
245
|
+
if (!existsSync3(CACHE_PATH)) return null;
|
|
246
|
+
const raw = JSON.parse(readFileSync2(CACHE_PATH, "utf8"));
|
|
247
|
+
return typeof raw.token === "string" ? raw.token : null;
|
|
248
|
+
} catch {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// src/bin/exe-support.ts
|
|
254
|
+
var DEFAULT_BUG_ENDPOINT = "https://askexe.com/v1/support/bug-reports";
|
|
255
|
+
var DEFAULT_ADMIN_ENDPOINT = "https://askexe.com/admin/support/bug-reports";
|
|
256
|
+
async function main(argv = process.argv.slice(2)) {
|
|
257
|
+
const command = argv[0] && !argv[0].startsWith("--") ? argv[0] : "test";
|
|
258
|
+
const json = argv.includes("--json");
|
|
259
|
+
const project = getArg(argv, "--project") ?? "support-smoke";
|
|
260
|
+
if (command === "health") {
|
|
261
|
+
const result = await runHealth();
|
|
262
|
+
output(result, json);
|
|
263
|
+
process.exitCode = result.some((row) => !row.ok) ? 1 : 0;
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
if (command === "test") {
|
|
267
|
+
const result = await runTest(project);
|
|
268
|
+
output(result, json);
|
|
269
|
+
process.exitCode = result.some((row) => !row.ok) ? 1 : 0;
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
console.error("Usage: exe-os support health|test [--project <name>] [--json]");
|
|
273
|
+
process.exitCode = 1;
|
|
274
|
+
}
|
|
275
|
+
async function runHealth() {
|
|
276
|
+
const checks = [];
|
|
277
|
+
const endpoints = await resolveEndpoints();
|
|
278
|
+
checks.push(checkLocalWrite());
|
|
279
|
+
checks.push({
|
|
280
|
+
check: "license_key_present",
|
|
281
|
+
ok: Boolean(loadLicense()),
|
|
282
|
+
detail: loadLicense() ? "license.key found" : "missing ~/.exe-os/license.key; run exe-os setup or exe-os cloud setup"
|
|
283
|
+
});
|
|
284
|
+
checks.push({
|
|
285
|
+
check: "license_token_cached",
|
|
286
|
+
ok: Boolean(readCachedLicenseToken()),
|
|
287
|
+
detail: readCachedLicenseToken() ? "cached license token found" : "no cached token yet; support can still use license.key"
|
|
288
|
+
});
|
|
289
|
+
try {
|
|
290
|
+
const res = await fetch(endpoints.healthEndpoint, { method: "GET", signal: AbortSignal.timeout(1e4) });
|
|
291
|
+
const body = await safeJson(res);
|
|
292
|
+
checks.push({
|
|
293
|
+
check: "support_health_endpoint",
|
|
294
|
+
ok: res.ok && body?.status !== "down",
|
|
295
|
+
detail: `${res.status} ${body?.status ?? res.statusText}`
|
|
296
|
+
});
|
|
297
|
+
for (const remote of body?.checks ?? []) {
|
|
298
|
+
checks.push({
|
|
299
|
+
check: `server_${remote.name ?? "unknown"}`,
|
|
300
|
+
ok: remote.ok === true,
|
|
301
|
+
detail: remote.detail ?? (remote.ok ? "ok" : "failed")
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
} catch (err) {
|
|
305
|
+
checks.push({
|
|
306
|
+
check: "support_health_endpoint",
|
|
307
|
+
ok: false,
|
|
308
|
+
detail: err instanceof Error ? err.message : String(err)
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
return checks;
|
|
312
|
+
}
|
|
313
|
+
async function runTest(project) {
|
|
314
|
+
const checks = await runHealth();
|
|
315
|
+
const endpoints = await resolveEndpoints();
|
|
316
|
+
const licenseKey = loadLicense();
|
|
317
|
+
const licenseToken = readCachedLicenseToken();
|
|
318
|
+
const id = randomUUID2();
|
|
319
|
+
const version = readPackageVersion();
|
|
320
|
+
const reportPath = writeLocalTestReport(id, project, version);
|
|
321
|
+
checks.push({ check: "local_report_file", ok: true, detail: reportPath });
|
|
322
|
+
if (!licenseKey && !licenseToken) {
|
|
323
|
+
checks.push({ check: "upstream_post", ok: false, detail: "missing license key/token" });
|
|
324
|
+
return checks;
|
|
325
|
+
}
|
|
326
|
+
const payload = {
|
|
327
|
+
id,
|
|
328
|
+
title: `TEST \u2014 ${project} support intake (${version})`,
|
|
329
|
+
classification: "unclear",
|
|
330
|
+
severity: "p3",
|
|
331
|
+
summary: "Synthetic exe-os support intake smoke test. Safe to close.",
|
|
332
|
+
customer_impact: "No customer impact; diagnostic only.",
|
|
333
|
+
reproduction_steps: ["Run exe-os support test"],
|
|
334
|
+
expected: "The report reaches AskExe support intake and can be triaged.",
|
|
335
|
+
actual: "Smoke test submitted by exe-os support test.",
|
|
336
|
+
package_version: `@askexenow/exe-os@${version}`,
|
|
337
|
+
project_name: project,
|
|
338
|
+
agent_id: "support-test",
|
|
339
|
+
agent_role: "diagnostic",
|
|
340
|
+
report_path: reportPath,
|
|
341
|
+
markdown: readFileSync3(reportPath, "utf8")
|
|
342
|
+
};
|
|
343
|
+
try {
|
|
344
|
+
const headers = { "content-type": "application/json" };
|
|
345
|
+
if (licenseKey) headers["x-exe-license-key"] = licenseKey;
|
|
346
|
+
if (licenseToken) headers["x-exe-license-token"] = licenseToken;
|
|
347
|
+
const res = await fetch(endpoints.bugEndpoint, {
|
|
348
|
+
method: "POST",
|
|
349
|
+
headers,
|
|
350
|
+
body: JSON.stringify(payload),
|
|
351
|
+
signal: AbortSignal.timeout(15e3)
|
|
352
|
+
});
|
|
353
|
+
const data = await safeJson(res);
|
|
354
|
+
checks.push({
|
|
355
|
+
check: "upstream_post",
|
|
356
|
+
ok: res.ok,
|
|
357
|
+
detail: res.ok ? `sent id=${String(data?.id ?? id)}` : `${res.status} ${JSON.stringify(data)}`
|
|
358
|
+
});
|
|
359
|
+
if (res.ok) {
|
|
360
|
+
checks.push(await maybeCloseAdmin(String(data?.id ?? id), endpoints.adminEndpoint, version));
|
|
361
|
+
}
|
|
362
|
+
} catch (err) {
|
|
363
|
+
checks.push({ check: "upstream_post", ok: false, detail: err instanceof Error ? err.message : String(err) });
|
|
364
|
+
}
|
|
365
|
+
return checks;
|
|
366
|
+
}
|
|
367
|
+
async function resolveEndpoints() {
|
|
368
|
+
const config = await loadConfig();
|
|
369
|
+
const bugEndpoint = process.env.EXE_SUPPORT_BUG_REPORT_ENDPOINT ?? config.support?.bugReportEndpoint ?? DEFAULT_BUG_ENDPOINT;
|
|
370
|
+
const healthEndpoint = process.env.EXE_SUPPORT_HEALTH_ENDPOINT ?? bugEndpoint.replace(/\/bug-reports\/?$/, "/health");
|
|
371
|
+
const adminEndpoint = process.env.ASKEXE_SUPPORT_ADMIN_ENDPOINT ?? process.env.EXE_SUPPORT_ADMIN_ENDPOINT ?? DEFAULT_ADMIN_ENDPOINT;
|
|
372
|
+
return { bugEndpoint, healthEndpoint, adminEndpoint };
|
|
373
|
+
}
|
|
374
|
+
function checkLocalWrite() {
|
|
375
|
+
const dir = path3.join(EXE_AI_DIR, "bug-reports");
|
|
376
|
+
const testPath = path3.join(dir, ".support-write-test");
|
|
377
|
+
try {
|
|
378
|
+
mkdirSync3(dir, { recursive: true, mode: 448 });
|
|
379
|
+
writeFileSync2(testPath, "ok\n", { mode: 384 });
|
|
380
|
+
unlinkSync(testPath);
|
|
381
|
+
return { check: "local_bug_report_dir_writable", ok: true, detail: dir };
|
|
382
|
+
} catch (err) {
|
|
383
|
+
return { check: "local_bug_report_dir_writable", ok: false, detail: err instanceof Error ? err.message : String(err) };
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
function writeLocalTestReport(id, project, version) {
|
|
387
|
+
const dir = path3.join(EXE_AI_DIR, "bug-reports");
|
|
388
|
+
mkdirSync3(dir, { recursive: true, mode: 448 });
|
|
389
|
+
const date = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
390
|
+
const filePath = path3.join(dir, `${date}-support-intake-test-${id.slice(0, 8)}.md`);
|
|
391
|
+
writeFileSync2(filePath, `# TEST \u2014 ${project} support intake
|
|
392
|
+
|
|
393
|
+
Report ID: ${id}
|
|
394
|
+
Package: @askexenow/exe-os@${version}
|
|
395
|
+
|
|
396
|
+
Synthetic smoke test from \`exe-os support test\`. Safe to close.
|
|
397
|
+
`, { mode: 384 });
|
|
398
|
+
return filePath;
|
|
399
|
+
}
|
|
400
|
+
async function maybeCloseAdmin(id, adminEndpoint, version) {
|
|
401
|
+
const token = process.env.ASKEXE_SUPPORT_ADMIN_TOKEN ?? process.env.EXE_SUPPORT_ADMIN_TOKEN;
|
|
402
|
+
if (!token) {
|
|
403
|
+
return { check: "askexe_admin_autoclose", ok: true, detail: "skipped; admin token is AskExe-only" };
|
|
404
|
+
}
|
|
405
|
+
try {
|
|
406
|
+
const res = await fetch(`${adminEndpoint}/${encodeURIComponent(id)}`, {
|
|
407
|
+
method: "PATCH",
|
|
408
|
+
headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
|
|
409
|
+
body: JSON.stringify({
|
|
410
|
+
status: "closed",
|
|
411
|
+
triage_notes: "Auto-closed synthetic support smoke test.",
|
|
412
|
+
fixed_version: version
|
|
413
|
+
}),
|
|
414
|
+
signal: AbortSignal.timeout(1e4)
|
|
415
|
+
});
|
|
416
|
+
return { check: "askexe_admin_autoclose", ok: res.ok, detail: res.ok ? "closed" : `${res.status} ${await res.text()}` };
|
|
417
|
+
} catch (err) {
|
|
418
|
+
return { check: "askexe_admin_autoclose", ok: false, detail: err instanceof Error ? err.message : String(err) };
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
function readPackageVersion() {
|
|
422
|
+
let dir = path3.dirname(new URL(import.meta.url).pathname);
|
|
423
|
+
for (let i = 0; i < 6; i++) {
|
|
424
|
+
const pkg = path3.join(dir, "package.json");
|
|
425
|
+
try {
|
|
426
|
+
const parsed = JSON.parse(readFileSync3(pkg, "utf8"));
|
|
427
|
+
if (parsed.version) return parsed.version;
|
|
428
|
+
} catch {
|
|
429
|
+
}
|
|
430
|
+
dir = path3.dirname(dir);
|
|
431
|
+
}
|
|
432
|
+
return "unknown";
|
|
433
|
+
}
|
|
434
|
+
async function safeJson(res) {
|
|
435
|
+
try {
|
|
436
|
+
return await res.json();
|
|
437
|
+
} catch {
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
function getArg(argv, name) {
|
|
442
|
+
const idx = argv.indexOf(name);
|
|
443
|
+
if (idx >= 0) return argv[idx + 1];
|
|
444
|
+
const prefix = `${name}=`;
|
|
445
|
+
const found = argv.find((arg) => arg.startsWith(prefix));
|
|
446
|
+
return found?.slice(prefix.length);
|
|
447
|
+
}
|
|
448
|
+
function output(rows, json) {
|
|
449
|
+
if (json) {
|
|
450
|
+
console.log(JSON.stringify({ ok: rows.every((row) => row.ok), checks: rows }, null, 2));
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
console.log("\nexe-os support diagnostics\n");
|
|
454
|
+
for (const row of rows) {
|
|
455
|
+
console.log(`${row.ok ? "\u2705" : "\u274C"} ${row.check}: ${row.detail}`);
|
|
456
|
+
}
|
|
457
|
+
console.log("");
|
|
458
|
+
}
|
|
459
|
+
export {
|
|
460
|
+
main
|
|
461
|
+
};
|
package/dist/bin/exe-team.js
CHANGED
|
@@ -4145,7 +4145,7 @@ var init_platform_procedures = __esm({
|
|
|
4145
4145
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
4146
4146
|
domain: "support",
|
|
4147
4147
|
priority: "p0",
|
|
4148
|
-
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. 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."
|
|
4148
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
4149
4149
|
},
|
|
4150
4150
|
// --- Operations ---
|
|
4151
4151
|
{
|
|
@@ -4227,7 +4227,7 @@ var init_platform_procedures = __esm({
|
|
|
4227
4227
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
4228
4228
|
domain: "tool-use",
|
|
4229
4229
|
priority: "p1",
|
|
4230
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
4230
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
4231
4231
|
},
|
|
4232
4232
|
{
|
|
4233
4233
|
title: "MCP tools \u2014 communication and messaging",
|
package/dist/bin/git-sweep.js
CHANGED
|
@@ -7850,7 +7850,7 @@ var init_platform_procedures = __esm({
|
|
|
7850
7850
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
7851
7851
|
domain: "support",
|
|
7852
7852
|
priority: "p0",
|
|
7853
|
-
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. 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."
|
|
7853
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
7854
7854
|
},
|
|
7855
7855
|
// --- Operations ---
|
|
7856
7856
|
{
|
|
@@ -7932,7 +7932,7 @@ var init_platform_procedures = __esm({
|
|
|
7932
7932
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
7933
7933
|
domain: "tool-use",
|
|
7934
7934
|
priority: "p1",
|
|
7935
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
7935
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
7936
7936
|
},
|
|
7937
7937
|
{
|
|
7938
7938
|
title: "MCP tools \u2014 communication and messaging",
|
|
@@ -3362,7 +3362,7 @@ var init_platform_procedures = __esm({
|
|
|
3362
3362
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
3363
3363
|
domain: "support",
|
|
3364
3364
|
priority: "p0",
|
|
3365
|
-
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. 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."
|
|
3365
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
3366
3366
|
},
|
|
3367
3367
|
// --- Operations ---
|
|
3368
3368
|
{
|
|
@@ -3444,7 +3444,7 @@ var init_platform_procedures = __esm({
|
|
|
3444
3444
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
3445
3445
|
domain: "tool-use",
|
|
3446
3446
|
priority: "p1",
|
|
3447
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
3447
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
3448
3448
|
},
|
|
3449
3449
|
{
|
|
3450
3450
|
title: "MCP tools \u2014 communication and messaging",
|
package/dist/bin/graph-export.js
CHANGED
|
@@ -4134,7 +4134,7 @@ var init_platform_procedures = __esm({
|
|
|
4134
4134
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
4135
4135
|
domain: "support",
|
|
4136
4136
|
priority: "p0",
|
|
4137
|
-
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. 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."
|
|
4137
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
4138
4138
|
},
|
|
4139
4139
|
// --- Operations ---
|
|
4140
4140
|
{
|
|
@@ -4216,7 +4216,7 @@ var init_platform_procedures = __esm({
|
|
|
4216
4216
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
4217
4217
|
domain: "tool-use",
|
|
4218
4218
|
priority: "p1",
|
|
4219
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
4219
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
4220
4220
|
},
|
|
4221
4221
|
{
|
|
4222
4222
|
title: "MCP tools \u2014 communication and messaging",
|
|
@@ -4243,7 +4243,7 @@ var init_platform_procedures = __esm({
|
|
|
4243
4243
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
4244
4244
|
domain: "support",
|
|
4245
4245
|
priority: "p0",
|
|
4246
|
-
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. 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."
|
|
4246
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
4247
4247
|
},
|
|
4248
4248
|
// --- Operations ---
|
|
4249
4249
|
{
|
|
@@ -4325,7 +4325,7 @@ var init_platform_procedures = __esm({
|
|
|
4325
4325
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
4326
4326
|
domain: "tool-use",
|
|
4327
4327
|
priority: "p1",
|
|
4328
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
4328
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
4329
4329
|
},
|
|
4330
4330
|
{
|
|
4331
4331
|
title: "MCP tools \u2014 communication and messaging",
|
package/dist/bin/scan-tasks.js
CHANGED
|
@@ -7921,7 +7921,7 @@ var init_platform_procedures = __esm({
|
|
|
7921
7921
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
7922
7922
|
domain: "support",
|
|
7923
7923
|
priority: "p0",
|
|
7924
|
-
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. 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."
|
|
7924
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
7925
7925
|
},
|
|
7926
7926
|
// --- Operations ---
|
|
7927
7927
|
{
|
|
@@ -8003,7 +8003,7 @@ var init_platform_procedures = __esm({
|
|
|
8003
8003
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
8004
8004
|
domain: "tool-use",
|
|
8005
8005
|
priority: "p1",
|
|
8006
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
8006
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
8007
8007
|
},
|
|
8008
8008
|
{
|
|
8009
8009
|
title: "MCP tools \u2014 communication and messaging",
|
package/dist/bin/setup.js
CHANGED
|
@@ -6421,7 +6421,7 @@ var init_platform_procedures = __esm({
|
|
|
6421
6421
|
title: "Customer patch triage \u2014 upstream bug vs customization",
|
|
6422
6422
|
domain: "support",
|
|
6423
6423
|
priority: "p0",
|
|
6424
|
-
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. 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."
|
|
6424
|
+
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, run `exe-os support test` and include its result in the local report so AskExe can distinguish customer setup, license provisioning, and server intake issues. 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."
|
|
6425
6425
|
},
|
|
6426
6426
|
// --- Operations ---
|
|
6427
6427
|
{
|
|
@@ -6503,7 +6503,7 @@ var init_platform_procedures = __esm({
|
|
|
6503
6503
|
title: "MCP tools \u2014 identity, behavior, and decisions",
|
|
6504
6504
|
domain: "tool-use",
|
|
6505
6505
|
priority: "p1",
|
|
6506
|
-
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only."
|
|
6506
|
+
content: "get_identity: read an agent's exe.md (Layer 1 identity). update_identity: write an agent's exe.md. Identity > behavior \u2014 use for permanent rules. store_behavior: record a correction or pattern for an agent (Layer 2 expertise). list_behaviors: view an agent's active behaviors. deactivate_behavior: soft-delete a stale or conflicting behavior. store_decision: record an ADR (architectural decision record). get_decision: retrieve a past decision by query. create_bug_report: customer-facing bug/support intake; use whenever an Exe OS bug or emergency hotfix is encountered so the report reaches AskExe directly. Customers only get report access; internal list/get/triage support tools are AskExe-only. If a customer-side agent cannot send upstream, run `exe-os support test` from the terminal to verify local file write, license auth, support endpoint health, and upstream POST."
|
|
6507
6507
|
},
|
|
6508
6508
|
{
|
|
6509
6509
|
title: "MCP tools \u2014 communication and messaging",
|
|
@@ -8908,6 +8908,7 @@ async function runSetupWizard(opts = {}) {
|
|
|
8908
8908
|
log("");
|
|
8909
8909
|
log(" Recommended start: Phase 1 \u2014 talk to your COO first");
|
|
8910
8910
|
log(" Check/change phase: exe-os org phase");
|
|
8911
|
+
log(" Verify support intake: exe-os support test");
|
|
8911
8912
|
log(" Unlock executives later: exe-os org unlock executives");
|
|
8912
8913
|
log("");
|
|
8913
8914
|
log(` cd into a project folder: cd ~/my-project`);
|