@askexenow/exe-os 0.8.69 → 0.8.71

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.
@@ -3079,31 +3079,61 @@ function buildLaunchPlan(agent, behaviorsPath, passthrough, _hasAgentFlag, _prov
3079
3079
  }
3080
3080
  }
3081
3081
  const effectiveIdPath = existsSync6(idPath) ? idPath : effectiveCcPath;
3082
- if (!effectiveIdPath) {
3082
+ let identityContent = null;
3083
+ if (effectiveIdPath && existsSync6(effectiveIdPath)) {
3084
+ try {
3085
+ const content = readFileSync4(effectiveIdPath, "utf-8");
3086
+ if (content.trim().length > 0) identityContent = content;
3087
+ } catch {
3088
+ }
3089
+ }
3090
+ if (!identityContent) {
3091
+ try {
3092
+ const rosterPath = path7.join(os5.homedir(), ".exe-os", "exe-employees.json");
3093
+ if (existsSync6(rosterPath)) {
3094
+ const roster = JSON.parse(readFileSync4(rosterPath, "utf8"));
3095
+ const emp = roster.find((e) => e.name.toLowerCase() === agent.toLowerCase());
3096
+ if (emp?.systemPrompt && emp.systemPrompt.trim().length > 20) {
3097
+ identityContent = emp.systemPrompt;
3098
+ try {
3099
+ const dir = path7.dirname(idPath);
3100
+ if (!existsSync6(dir)) mkdirSync4(dir, { recursive: true });
3101
+ writeFileSync4(idPath, identityContent, "utf-8");
3102
+ process.stderr.write(`[exe-launch-agent] self-healed missing identity file: ${idPath}
3103
+ `);
3104
+ } catch {
3105
+ }
3106
+ }
3107
+ }
3108
+ } catch {
3109
+ }
3110
+ }
3111
+ if (!identityContent) {
3083
3112
  process.stderr.write(
3084
3113
  `
3085
- \u26A0\uFE0F No identity file found for agent "${agent}".
3114
+ \u26A0\uFE0F No identity found for agent "${agent}".
3086
3115
  Checked: ${idPath}
3087
- Checked: ${ccAgentPath}
3116
+ Checked: roster systemPrompt
3088
3117
  Claude will boot without agent identity.
3089
- Fix: run exe-os setup (option 2) to sync from cloud, or copy the identity file manually.
3118
+ Fix: run exe-os setup (option 2) to sync from cloud.
3090
3119
 
3091
3120
  `
3092
3121
  );
3093
3122
  }
3094
- if (effectiveIdPath) {
3123
+ if (identityContent) {
3095
3124
  if (ccSupportsFlag("--system-prompt")) {
3125
+ args.push("--system-prompt", getSessionPrompt(identityContent));
3126
+ } else {
3096
3127
  try {
3097
- const identity = readFileSync4(effectiveIdPath, "utf-8");
3098
- args.push("--system-prompt", getSessionPrompt(identity));
3128
+ const tmpPath = path7.join(os5.homedir(), ".exe-os", "session-cache", `${agent}-identity.md`);
3129
+ mkdirSync4(path7.dirname(tmpPath), { recursive: true });
3130
+ writeFileSync4(tmpPath, identityContent, "utf-8");
3131
+ args.push("--append-system-prompt-file", tmpPath);
3099
3132
  } catch {
3100
- args.push("--append-system-prompt-file", effectiveIdPath);
3101
3133
  }
3102
- } else {
3103
- args.push("--append-system-prompt-file", effectiveIdPath);
3104
3134
  }
3105
3135
  }
3106
- if (behaviorsPath) {
3136
+ if (behaviorsPath && existsSync6(behaviorsPath)) {
3107
3137
  args.push("--append-system-prompt-file", behaviorsPath);
3108
3138
  }
3109
3139
  const leanMcp = leanMcpConfigFor(agent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.8.69",
3
+ "version": "0.8.71",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "CC-BY-NC-4.0",
6
6
  "type": "module",