aiden-runtime 3.19.8 → 3.19.9

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.
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "gpu": "NVIDIA GeForce GTX 1060 6GB",
3
3
  "vramGB": 6,
4
- "ramGB": 16,
4
+ "ramGB": 32,
5
5
  "platform": "windows",
6
6
  "cudaAvailable": true,
7
7
  "appleSilicon": false,
8
- "detectedAt": "2026-05-01T19:50:20.289Z"
8
+ "detectedAt": "2026-05-03T13:08:55.885Z"
9
9
  }
@@ -358,6 +358,17 @@ function handleChatError(err, apiName, send) {
358
358
  }
359
359
  // Workspace root — AIDEN_USER_DATA in packaged Electron, cwd in dev
360
360
  const WORKSPACE_ROOT = process.env.AIDEN_USER_DATA || process.cwd();
361
+ // Package root — where workspace-templates/ ships inside the npm tarball.
362
+ // In esbuild bundle (dist-bundle/index.js): __dirname = <pkg>/dist-bundle/ → parent is <pkg>
363
+ // In tsc output (dist/api/server.js): __dirname = <pkg>/dist/api/ → grandparent is <pkg>
364
+ // C22: needed because WORKSPACE_ROOT may differ from the npm install dir.
365
+ const _pkgCandidate1 = path.join(__dirname, '..');
366
+ const _pkgCandidate2 = path.join(__dirname, '..', '..');
367
+ const PACKAGE_ROOT = fs.existsSync(path.join(_pkgCandidate1, 'workspace-templates'))
368
+ ? _pkgCandidate1
369
+ : fs.existsSync(path.join(_pkgCandidate2, 'workspace-templates'))
370
+ ? _pkgCandidate2
371
+ : WORKSPACE_ROOT; // dev mode: cwd has workspace-templates
361
372
  // Per-session soul hash for Option-B protected-context injection.
362
373
  // First turn: undefined → full SOUL inject. Subsequent turns: compare → emit
363
374
  // reference line when unchanged, re-inject when SOUL.md edited on disk.
@@ -395,22 +406,25 @@ function initWorkspaceDefaults() {
395
406
  }
396
407
  }
397
408
  // Copy permissions.yaml from template if not present
409
+ // C22: Source from PACKAGE_ROOT (npm install dir), dest to WORKSPACE_ROOT (user data)
398
410
  const permTarget = path.join(WORKSPACE_ROOT, 'workspace', 'permissions.yaml');
399
- const permTemplate = path.join(WORKSPACE_ROOT, 'workspace-templates', 'permissions.yaml');
411
+ const permTemplate = path.join(PACKAGE_ROOT, 'workspace-templates', 'permissions.yaml');
400
412
  if (!fs.existsSync(permTarget) && fs.existsSync(permTemplate)) {
401
413
  fs.copyFileSync(permTemplate, permTarget);
402
414
  console.log('[init] Created workspace/permissions.yaml from template');
403
415
  }
404
416
  // C21: Copy SOUL.md from template if not present (Ollama identity)
417
+ // C22: Source from PACKAGE_ROOT (npm install dir), dest to WORKSPACE_ROOT (user data)
405
418
  const soulTarget = path.join(WORKSPACE_ROOT, 'workspace', 'SOUL.md');
406
- const soulTemplate = path.join(WORKSPACE_ROOT, 'workspace-templates', 'SOUL.md');
419
+ const soulTemplate = path.join(PACKAGE_ROOT, 'workspace-templates', 'SOUL.md');
407
420
  if (!fs.existsSync(soulTarget) && fs.existsSync(soulTemplate)) {
408
421
  fs.copyFileSync(soulTemplate, soulTarget);
409
422
  console.log('[init] Created workspace/SOUL.md from template');
410
423
  }
411
424
  // C22: Copy bundled starter skills from workspace-templates/ on first boot.
412
- // Mirrors the SOUL.md pattern above. Idempotent skips if skills already exist.
413
- const skillTemplateSrc = path.join(WORKSPACE_ROOT, 'workspace-templates', 'skills');
425
+ // Source from PACKAGE_ROOT (npm install dir), dest to WORKSPACE_ROOT (user data).
426
+ // Idempotent skips if skills already exist.
427
+ const skillTemplateSrc = path.join(PACKAGE_ROOT, 'workspace-templates', 'skills');
414
428
  const skillDst = path.join(WORKSPACE_ROOT, 'workspace', 'skills', 'learned');
415
429
  if (fs.existsSync(skillTemplateSrc)) {
416
430
  const hasExisting = (() => {
@@ -195,6 +195,9 @@ class SkillLoader {
195
195
  // C22: Use AIDEN_USER_DATA (set by npx launcher) so SkillLoader reads
196
196
  // from the same workspace root that initWorkspaceDefaults() writes to.
197
197
  const root = process.env.AIDEN_USER_DATA || process.cwd();
198
+ // C24: Do NOT filter by existsSync here — the singleton is created at
199
+ // import time, before initWorkspaceDefaults() copies templates. loadAll()
200
+ // wraps readdirSync in try/catch, so non-existent dirs are safe.
198
201
  this.skillsDirs = [
199
202
  path_1.default.join(root, 'skills'),
200
203
  path_1.default.join(root, 'workspace', 'skills'),
@@ -206,14 +209,7 @@ class SkillLoader {
206
209
  path_1.default.join(root, 'skills', 'learned', 'approved'),
207
210
  // A4 library-installed skills
208
211
  path_1.default.join(root, 'skills', 'installed'),
209
- ].filter(d => {
210
- try {
211
- return fs_1.default.existsSync(d);
212
- }
213
- catch {
214
- return false;
215
- }
216
- });
212
+ ];
217
213
  }
218
214
  // loadAllRaw — bypasses the disabled-skills filter
219
215
  // Used by GET /api/skills so the UI can show disabled skills too
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // AUTO-GENERATED by scripts/inject-version.js — do not edit by hand
5
- exports.VERSION = '3.19.8';
5
+ exports.VERSION = '3.19.9';
@@ -208,7 +208,7 @@ var init_updateCheck = __esm({
208
208
  var VERSION;
209
209
  var init_version = __esm({
210
210
  "core/version.ts"() {
211
- VERSION = "3.19.8";
211
+ VERSION = "3.19.9";
212
212
  }
213
213
  });
214
214
 
@@ -24909,13 +24909,7 @@ var init_skillLoader = __esm({
24909
24909
  import_path12.default.join(root, "skills", "learned", "approved"),
24910
24910
  // A4 library-installed skills
24911
24911
  import_path12.default.join(root, "skills", "installed")
24912
- ].filter((d) => {
24913
- try {
24914
- return import_fs11.default.existsSync(d);
24915
- } catch {
24916
- return false;
24917
- }
24918
- });
24912
+ ];
24919
24913
  }
24920
24914
  // loadAllRaw — bypasses the disabled-skills filter
24921
24915
  // Used by GET /api/skills so the UI can show disabled skills too
@@ -26650,7 +26650,7 @@ var require_websocket_server = __commonJS({
26650
26650
  var VERSION;
26651
26651
  var init_version = __esm({
26652
26652
  "core/version.ts"() {
26653
- VERSION = "3.19.8";
26653
+ VERSION = "3.19.9";
26654
26654
  }
26655
26655
  });
26656
26656
 
@@ -99143,13 +99143,7 @@ var init_skillLoader = __esm({
99143
99143
  import_path15.default.join(root, "skills", "learned", "approved"),
99144
99144
  // A4 library-installed skills
99145
99145
  import_path15.default.join(root, "skills", "installed")
99146
- ].filter((d) => {
99147
- try {
99148
- return import_fs14.default.existsSync(d);
99149
- } catch {
99150
- return false;
99151
- }
99152
- });
99146
+ ];
99153
99147
  }
99154
99148
  // loadAllRaw — bypasses the disabled-skills filter
99155
99149
  // Used by GET /api/skills so the UI can show disabled skills too
@@ -1053398,6 +1053392,9 @@ function handleChatError(err, apiName, send) {
1053398
1053392
  send({ done: true });
1053399
1053393
  }
1053400
1053394
  var WORKSPACE_ROOT4 = process.env.AIDEN_USER_DATA || process.cwd();
1053395
+ var _pkgCandidate1 = path73.join(__dirname, "..");
1053396
+ var _pkgCandidate2 = path73.join(__dirname, "..", "..");
1053397
+ var PACKAGE_ROOT = fs70.existsSync(path73.join(_pkgCandidate1, "workspace-templates")) ? _pkgCandidate1 : fs70.existsSync(path73.join(_pkgCandidate2, "workspace-templates")) ? _pkgCandidate2 : WORKSPACE_ROOT4;
1053401
1053398
  var soulHashBySession2 = /* @__PURE__ */ new Map();
1053402
1053399
  function initWorkspaceDefaults() {
1053403
1053400
  const dirs = [
@@ -1053436,18 +1053433,18 @@ function initWorkspaceDefaults() {
1053436
1053433
  }
1053437
1053434
  }
1053438
1053435
  const permTarget = path73.join(WORKSPACE_ROOT4, "workspace", "permissions.yaml");
1053439
- const permTemplate = path73.join(WORKSPACE_ROOT4, "workspace-templates", "permissions.yaml");
1053436
+ const permTemplate = path73.join(PACKAGE_ROOT, "workspace-templates", "permissions.yaml");
1053440
1053437
  if (!fs70.existsSync(permTarget) && fs70.existsSync(permTemplate)) {
1053441
1053438
  fs70.copyFileSync(permTemplate, permTarget);
1053442
1053439
  console.log("[init] Created workspace/permissions.yaml from template");
1053443
1053440
  }
1053444
1053441
  const soulTarget = path73.join(WORKSPACE_ROOT4, "workspace", "SOUL.md");
1053445
- const soulTemplate = path73.join(WORKSPACE_ROOT4, "workspace-templates", "SOUL.md");
1053442
+ const soulTemplate = path73.join(PACKAGE_ROOT, "workspace-templates", "SOUL.md");
1053446
1053443
  if (!fs70.existsSync(soulTarget) && fs70.existsSync(soulTemplate)) {
1053447
1053444
  fs70.copyFileSync(soulTemplate, soulTarget);
1053448
1053445
  console.log("[init] Created workspace/SOUL.md from template");
1053449
1053446
  }
1053450
- const skillTemplateSrc = path73.join(WORKSPACE_ROOT4, "workspace-templates", "skills");
1053447
+ const skillTemplateSrc = path73.join(PACKAGE_ROOT, "workspace-templates", "skills");
1053451
1053448
  const skillDst = path73.join(WORKSPACE_ROOT4, "workspace", "skills", "learned");
1053452
1053449
  if (fs70.existsSync(skillTemplateSrc)) {
1053453
1053450
  const hasExisting = (() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiden-runtime",
3
- "version": "3.19.8",
3
+ "version": "3.19.9",
4
4
  "description": "Autonomous AI Operating System — Local, Private, Free. Runs on your machine with Ollama.",
5
5
  "author": "Taracod <hello@taracod.com>",
6
6
  "license": "AGPL-3.0-only",