adam-agent-server 0.1.0 → 0.2.0

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 (130) hide show
  1. package/README.md +11 -19
  2. package/dist/App-G2WZKRUH.js +9 -0
  3. package/dist/adam-tools-Q4BRKX3U.js +1 -0
  4. package/dist/approval-handler-D3J6NCMM.js +4 -0
  5. package/dist/bree-engine-SQMSKGAP.js +1 -0
  6. package/dist/channels-VEUBY2NZ.js +1 -0
  7. package/dist/channels-WFZAONF3.js +1 -0
  8. package/dist/{chunk-5GMYXCL3.js → chunk-2EP27EGS.js} +1 -1
  9. package/dist/chunk-2GXYBWLS.js +10 -0
  10. package/dist/chunk-2VKE7ONM.js +86 -0
  11. package/dist/{chunk-HMXDNPFE.js → chunk-5ASEAZCR.js} +1 -1
  12. package/dist/chunk-5JLMSNIW.js +1 -0
  13. package/dist/{chunk-MMIO6BCA.js → chunk-742NWPTQ.js} +3 -3
  14. package/dist/chunk-7SPKRIMZ.js +15 -0
  15. package/dist/chunk-AXMXXUPO.js +5 -0
  16. package/dist/{chunk-5AKFAMQL.js → chunk-B6S2AEOD.js} +1 -1
  17. package/dist/chunk-DT2LX4XI.js +49 -0
  18. package/dist/{chunk-VURJZLM6.js → chunk-EALDBELJ.js} +6 -3
  19. package/dist/{chunk-ZN5Q3YET.js → chunk-ETQ7KC73.js} +1 -1
  20. package/dist/chunk-FDWW245P.js +5 -0
  21. package/dist/chunk-FUGJMHY4.js +1 -0
  22. package/dist/chunk-FYDFMYUP.js +1 -0
  23. package/dist/chunk-HAWA62R2.js +26 -0
  24. package/dist/chunk-IXF3XBGX.js +5 -0
  25. package/dist/chunk-JXD6ZPV7.js +2 -0
  26. package/dist/chunk-KICPHTI2.js +5 -0
  27. package/dist/chunk-L7426WNY.js +7 -0
  28. package/dist/{chunk-WGRTN6TX.js → chunk-L7JP7DUO.js} +1 -1
  29. package/dist/chunk-NICRQZ7T.js +1 -0
  30. package/dist/{chunk-3HM54J2N.js → chunk-NSJAV7IH.js} +1 -1
  31. package/dist/{chunk-W6JITSZF.js → chunk-PCSZW2PE.js} +28 -11
  32. package/dist/{chunk-EJJDJY34.js → chunk-PQ7KPALO.js} +1 -1
  33. package/dist/{chunk-F2IS5LWD.js → chunk-SFUS33SO.js} +1 -1
  34. package/dist/chunk-T25NLVMY.js +1 -0
  35. package/dist/chunk-TN6H2WM2.js +19 -0
  36. package/dist/chunk-U36NBCR3.js +17 -0
  37. package/dist/chunk-UOTDT2KY.js +3 -0
  38. package/dist/chunk-VF6GJGD6.js +6 -0
  39. package/dist/chunk-WXN3PSVX.js +6 -0
  40. package/dist/chunk-WZOMGJSY.js +1 -0
  41. package/dist/{chunk-62PXAOD6.js → chunk-XNWZZYAV.js} +1 -1
  42. package/dist/cli.js +15 -13
  43. package/dist/config-WHXCZCI4.js +1 -0
  44. package/dist/config-Y4QWELO3.js +1 -0
  45. package/dist/{db-ZDEA7EUY.js → db-PNZ3UJOE.js} +1 -1
  46. package/dist/delivery-log-VYTYUFCK.js +1 -0
  47. package/dist/engine-V5MOGOLN.js +1 -0
  48. package/dist/{evolution-audit-MDA2ZVJW.js → evolution-audit-B7WKMOVR.js} +1 -1
  49. package/dist/{external-api-T7FFXVHL.js → external-api-XGEOKAWR.js} +1 -1
  50. package/dist/index.js +41 -63
  51. package/dist/learner-VMD5NQCD.js +1 -0
  52. package/dist/memories-EFQ4SFZG.js +1 -0
  53. package/dist/memory-extractor-GOISDQTO.js +6 -0
  54. package/dist/memory-service-BKLZIRK6.js +1 -0
  55. package/dist/monitor-K7CGTLA6.js +1 -0
  56. package/dist/outbound-gateway-FIPC4BZO.js +1 -0
  57. package/dist/role-presets-FN2RWUCP.js +1 -0
  58. package/dist/{roles-CMV5FMIA.js → roles-SG2YAR64.js} +1 -1
  59. package/dist/runtime-6UTYEONR.js +1 -0
  60. package/dist/server-bus-GEGVMSCA.js +1 -0
  61. package/dist/session-manager-45LFTPBA.js +1 -0
  62. package/dist/{task-templates-AKQB7RRB.js → task-templates-7LSQ6OST.js} +1 -1
  63. package/dist/token-estimator-HMPVGDCN.js +1 -0
  64. package/package.json +2 -2
  65. package/web/dist/assets/{Card-BpwkRtmi.js → Card-BecEmnPW.js} +1 -1
  66. package/web/dist/assets/{ChannelDetail-050qK78l.js → ChannelDetail-dZfZlLgQ.js} +1 -1
  67. package/web/dist/assets/{Channels-DA4gN6nU.js → Channels-Cw04c7YJ.js} +1 -1
  68. package/web/dist/assets/{Chat-LzhfKGQ5.js → Chat-D4PHqHPE.js} +1 -1
  69. package/web/dist/assets/Dashboard-BFewwmAg.js +1 -0
  70. package/web/dist/assets/{EmptyState-B08f3BH6.js → EmptyState-DBFJc4PL.js} +1 -1
  71. package/web/dist/assets/{Evolution-BwsOuVbZ.js → Evolution-DY1OC6Oc.js} +4 -1
  72. package/web/dist/assets/{GoalDetail-Zo16ZrYD.js → GoalDetail-DZIEpHs2.js} +1 -1
  73. package/web/dist/assets/Goals-COCCVLnp.js +1 -0
  74. package/web/dist/assets/{Logs-CYfQ9k_6.js → Logs-DsDeimLt.js} +1 -1
  75. package/web/dist/assets/Memories-D5IEEI1u.js +1 -0
  76. package/web/dist/assets/NotFound-Cidygwnn.js +1 -0
  77. package/web/dist/assets/{Plugins-DHgIfely.js → Plugins-DUwZVjPc.js} +1 -1
  78. package/web/dist/assets/RoleDetail-B-GKMfMG.js +33 -0
  79. package/web/dist/assets/{Roles-DGpN5Vm6.js → Roles-JeVjD0Ew.js} +1 -1
  80. package/web/dist/assets/Settings-CvEyZp5t.js +1 -0
  81. package/web/dist/assets/{Strategies-DBp2jYdi.js → Strategies-KAmpqrcQ.js} +1 -1
  82. package/web/dist/assets/{Switch-yk5-dsti.js → Switch-Jpdn6Yux.js} +1 -1
  83. package/web/dist/assets/{Table-DWR4p9xA.js → Table-tkJ-cuiE.js} +1 -1
  84. package/web/dist/assets/TaskDetail-C4NpqwNT.js +2 -0
  85. package/web/dist/assets/Work-DhaxNYnd.js +1 -0
  86. package/web/dist/assets/dist-HyCSN_hp.js +1 -0
  87. package/web/dist/assets/index-CfKqiQIe.js +52 -0
  88. package/web/dist/assets/index-LDFr0VVR.css +2 -0
  89. package/web/dist/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  90. package/web/dist/assets/vendor-icons-ZPvC5PUS.js +1 -0
  91. package/web/dist/assets/vendor-react--nRVf2Ep.js +12 -0
  92. package/web/dist/assets/{vendor-state-CRsbPXtF.js → vendor-state-CH64feAE.js} +1 -1
  93. package/web/dist/index.html +7 -7
  94. package/dist/App-23CRAK2P.js +0 -9
  95. package/dist/adam-tools-MKUMZWCR.js +0 -1
  96. package/dist/approval-handler-SBFVVFGH.js +0 -4
  97. package/dist/channels-CNLMTKHM.js +0 -1
  98. package/dist/channels-VNG7U6UQ.js +0 -1
  99. package/dist/chunk-37OAKNKA.js +0 -15
  100. package/dist/chunk-3OYRYMJW.js +0 -11
  101. package/dist/chunk-5BAD3NCT.js +0 -1
  102. package/dist/chunk-B3CVXD44.js +0 -104
  103. package/dist/chunk-CV3ROBUM.js +0 -1
  104. package/dist/chunk-FUBKGVWI.js +0 -8
  105. package/dist/chunk-J5YZQQTS.js +0 -3
  106. package/dist/chunk-Q3N5LVPZ.js +0 -5
  107. package/dist/chunk-QOPUUA7O.js +0 -1
  108. package/dist/chunk-TGQYM4TH.js +0 -6
  109. package/dist/chunk-TYR3QUCL.js +0 -23
  110. package/dist/config-42ZJPZDM.js +0 -1
  111. package/dist/delivery-log-7DQ36UGP.js +0 -1
  112. package/dist/engine-7VBPXTGK.js +0 -1
  113. package/dist/memories-BUNOVQVG.js +0 -1
  114. package/dist/role-presets-2X3VW75D.js +0 -1
  115. package/dist/runtime-772O2XKZ.js +0 -1
  116. package/dist/server-bus-N5LCY73J.js +0 -1
  117. package/dist/session-manager-KO4CR3W6.js +0 -1
  118. package/web/dist/assets/Dashboard-Bh32YC_E.js +0 -1
  119. package/web/dist/assets/Goals-BmfVadFN.js +0 -1
  120. package/web/dist/assets/Memories-CgSb60RC.js +0 -1
  121. package/web/dist/assets/RoleDetail-CNJkMSuz.js +0 -1
  122. package/web/dist/assets/Settings-PjFyeX8n.js +0 -1
  123. package/web/dist/assets/TaskDetail-DMg-JAbC.js +0 -2
  124. package/web/dist/assets/Work-BYgMw2qj.js +0 -1
  125. package/web/dist/assets/dist-jv3vbjrx.js +0 -1
  126. package/web/dist/assets/index-CWY8H-cU.js +0 -52
  127. package/web/dist/assets/index-OXMtvYRJ.css +0 -2
  128. package/web/dist/assets/rolldown-runtime-DF2fYuay.js +0 -1
  129. package/web/dist/assets/vendor-icons-DqHipOFA.js +0 -1
  130. package/web/dist/assets/vendor-react-C2hDj0vl.js +0 -11
@@ -1,4 +1,4 @@
1
- import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js";import d from"better-sqlite3";import{existsSync as I,mkdirSync as A}from"fs";import{dirname as R}from"path";function X(e){e.exec(`
1
+ import{d as L,g as A}from"./chunk-SFUS33SO.js";import{c as d}from"./chunk-FCV2DPZQ.js";import I from"better-sqlite3";import{existsSync as R,mkdirSync as X}from"fs";import{dirname as m}from"path";function O(e){e.exec(`
2
2
  CREATE TABLE IF NOT EXISTS server_state (
3
3
  id INTEGER PRIMARY KEY CHECK(id = 1),
4
4
  sdk_session_id TEXT,
@@ -8,7 +8,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
8
8
  created_at INTEGER NOT NULL DEFAULT (unixepoch('now') * 1000),
9
9
  last_active_at INTEGER
10
10
  );
11
- `),e.prepare("PRAGMA table_info(server_state)").all().some(T=>T.name==="schema_version")||e.exec("ALTER TABLE server_state ADD COLUMN schema_version INTEGER DEFAULT 0");let o=e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0;if(o<2){let T=["delivery_log","delivery_rules","manager_decisions","skill_scores","approval_rules","task_plans","calibration_history","task_plugins","marketplaces","plugins","trials","strategies","metric_tree","goals","chat_messages","chat_sessions","channels","evolution_audit","step_logs","task_templates","memories","tasks","config","memories_fts","memories_fts_config","memories_fts_data","memories_fts_docsize","memories_fts_idx"];for(let E of T)try{e.exec(`DROP TABLE IF EXISTS ${E}`)}catch{}for(let E of["memories_fts_insert","memories_fts_delete","memories_fts_update"])try{e.exec(`DROP TRIGGER IF EXISTS ${E}`)}catch{}}e.exec(`
11
+ `),e.prepare("PRAGMA table_info(server_state)").all().some(E=>E.name==="schema_version")||e.exec("ALTER TABLE server_state ADD COLUMN schema_version INTEGER DEFAULT 0");let o=e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0;if(o<2){let E=["delivery_log","delivery_rules","manager_decisions","skill_scores","approval_rules","task_plans","calibration_history","task_plugins","marketplaces","plugins","trials","strategies","metric_tree","goals","chat_messages","chat_sessions","channels","evolution_audit","step_logs","task_templates","memories","tasks","config","memories_fts","memories_fts_config","memories_fts_data","memories_fts_docsize","memories_fts_idx"];for(let T of E)try{e.exec(`DROP TABLE IF EXISTS ${T}`)}catch{}for(let T of["memories_fts_insert","memories_fts_delete","memories_fts_update"])try{e.exec(`DROP TRIGGER IF EXISTS ${T}`)}catch{}}if(e.exec(`
12
12
  CREATE TABLE IF NOT EXISTS tasks (
13
13
  id TEXT PRIMARY KEY,
14
14
  parent_id TEXT,
@@ -368,7 +368,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
368
368
 
369
369
  CREATE INDEX IF NOT EXISTS idx_calibration_goal ON calibration_history(goal_id);
370
370
  CREATE INDEX IF NOT EXISTS idx_calibration_computed ON calibration_history(computed_at);
371
- `);try{e.exec("ALTER TABLE server_state ADD COLUMN schema_version INTEGER DEFAULT 1")}catch{}if(e.exec("UPDATE server_state SET schema_version = 2 WHERE id = 1"),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<4&&(e.exec(`
371
+ `),o<2&&e.exec("UPDATE server_state SET schema_version = 2 WHERE id = 1"),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<4&&(e.exec(`
372
372
  CREATE TABLE IF NOT EXISTS roles (
373
373
  id TEXT PRIMARY KEY,
374
374
  name TEXT NOT NULL UNIQUE,
@@ -404,7 +404,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
404
404
  bound_at INTEGER NOT NULL,
405
405
  PRIMARY KEY (role_id, plugin_id)
406
406
  );
407
- `),e.prepare("PRAGMA table_info(tasks)").all().some(E=>E.name==="role_id")||(e.exec("ALTER TABLE tasks ADD COLUMN role_id TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)")),e.exec("UPDATE server_state SET schema_version = 4 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<5&&(e.exec(`
407
+ `),e.prepare("PRAGMA table_info(tasks)").all().some(T=>T.name==="role_id")||(e.exec("ALTER TABLE tasks ADD COLUMN role_id TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)")),e.exec("UPDATE server_state SET schema_version = 4 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<5&&(e.exec(`
408
408
  DROP TABLE IF EXISTS memories;
409
409
  CREATE TABLE memories (
410
410
  id TEXT PRIMARY KEY,
@@ -465,7 +465,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
465
465
  source TEXT DEFAULT 'reflection'
466
466
  );
467
467
  CREATE INDEX IF NOT EXISTS idx_evolution_audit_role_id ON evolution_audit(role_id);
468
- `),e.exec("UPDATE server_state SET schema_version = 5 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<6&&(e.prepare("PRAGMA table_info(roles)").all().some(E=>E.name==="importance_trigger_curr")||e.exec("ALTER TABLE roles ADD COLUMN importance_trigger_curr INTEGER DEFAULT 150"),e.exec("UPDATE server_state SET schema_version = 6 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<7&&(e.prepare("PRAGMA table_info(tasks)").all().some(E=>E.name==="source_session_id")||e.exec("ALTER TABLE tasks ADD COLUMN source_session_id TEXT"),e.exec("UPDATE server_state SET schema_version = 7 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<8){let T=e.prepare("PRAGMA table_info(goals)").all();T.some(s=>s.name==="source_session_id")||e.exec("ALTER TABLE goals ADD COLUMN source_session_id TEXT"),T.some(s=>s.name==="notify_targets")||e.exec("ALTER TABLE goals ADD COLUMN notify_targets TEXT");let E=e.prepare("PRAGMA table_info(task_templates)").all();E.some(s=>s.name==="source_session_id")||e.exec("ALTER TABLE task_templates ADD COLUMN source_session_id TEXT"),E.some(s=>s.name==="notify_targets")||e.exec("ALTER TABLE task_templates ADD COLUMN notify_targets TEXT"),E.some(s=>s.name==="goal_ids")||e.exec("ALTER TABLE task_templates ADD COLUMN goal_ids TEXT"),e.exec("UPDATE goals SET status = 'active' WHERE status IN ('pending','planning','executing','evaluating','replanning')"),e.exec("UPDATE server_state SET schema_version = 8 WHERE id = 1")}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<10){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS tasks_new"),e.exec("DROP TABLE IF EXISTS chat_sessions_new"),e.exec("DROP TABLE IF EXISTS task_plans_new"),e.exec("DROP TABLE IF EXISTS task_plugins_new"),e.exec("DROP TABLE IF EXISTS approval_rules_new"),e.exec("DROP TABLE IF EXISTS manager_decisions_new"),e.exec("DROP TABLE IF EXISTS channels_new");let T=e.prepare("PRAGMA table_info(roles)").all();T.some(t=>t.name==="allowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN allowed_tools TEXT"),T.some(t=>t.name==="disallowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN disallowed_tools TEXT"),T.some(t=>t.name==="evaluation_criteria")||e.exec("ALTER TABLE roles ADD COLUMN evaluation_criteria TEXT"),T.some(t=>t.name==="execution_mode")||e.exec("ALTER TABLE roles ADD COLUMN execution_mode TEXT DEFAULT 'isolated'"),T.some(t=>t.name==="model")||e.exec("ALTER TABLE roles ADD COLUMN model TEXT"),T.some(t=>t.name==="max_budget_usd")||e.exec("ALTER TABLE roles ADD COLUMN max_budget_usd REAL"),T.some(t=>t.name==="approval_required")||e.exec("ALTER TABLE roles ADD COLUMN approval_required TEXT"),T.some(t=>t.name==="source")||e.exec("ALTER TABLE roles ADD COLUMN source TEXT DEFAULT 'system'"),e.exec("DROP TABLE IF EXISTS agents"),e.exec("DROP TABLE IF EXISTS role_skills"),e.exec(`
468
+ `),e.exec("UPDATE server_state SET schema_version = 5 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<6&&(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="importance_trigger_curr")||e.exec("ALTER TABLE roles ADD COLUMN importance_trigger_curr INTEGER DEFAULT 150"),e.exec("UPDATE server_state SET schema_version = 6 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<7&&(e.prepare("PRAGMA table_info(tasks)").all().some(T=>T.name==="source_session_id")||e.exec("ALTER TABLE tasks ADD COLUMN source_session_id TEXT"),e.exec("UPDATE server_state SET schema_version = 7 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<8){let E=e.prepare("PRAGMA table_info(goals)").all();E.some(s=>s.name==="source_session_id")||e.exec("ALTER TABLE goals ADD COLUMN source_session_id TEXT"),E.some(s=>s.name==="notify_targets")||e.exec("ALTER TABLE goals ADD COLUMN notify_targets TEXT");let T=e.prepare("PRAGMA table_info(task_templates)").all();T.some(s=>s.name==="source_session_id")||e.exec("ALTER TABLE task_templates ADD COLUMN source_session_id TEXT"),T.some(s=>s.name==="notify_targets")||e.exec("ALTER TABLE task_templates ADD COLUMN notify_targets TEXT"),T.some(s=>s.name==="goal_ids")||e.exec("ALTER TABLE task_templates ADD COLUMN goal_ids TEXT"),e.exec("UPDATE goals SET status = 'active' WHERE status IN ('pending','planning','executing','evaluating','replanning')"),e.exec("UPDATE server_state SET schema_version = 8 WHERE id = 1")}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<10){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS tasks_new"),e.exec("DROP TABLE IF EXISTS chat_sessions_new"),e.exec("DROP TABLE IF EXISTS task_plans_new"),e.exec("DROP TABLE IF EXISTS task_plugins_new"),e.exec("DROP TABLE IF EXISTS approval_rules_new"),e.exec("DROP TABLE IF EXISTS manager_decisions_new"),e.exec("DROP TABLE IF EXISTS channels_new");let E=e.prepare("PRAGMA table_info(roles)").all();E.some(r=>r.name==="allowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN allowed_tools TEXT"),E.some(r=>r.name==="disallowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN disallowed_tools TEXT"),E.some(r=>r.name==="evaluation_criteria")||e.exec("ALTER TABLE roles ADD COLUMN evaluation_criteria TEXT"),E.some(r=>r.name==="execution_mode")||e.exec("ALTER TABLE roles ADD COLUMN execution_mode TEXT DEFAULT 'isolated'"),E.some(r=>r.name==="model")||e.exec("ALTER TABLE roles ADD COLUMN model TEXT"),E.some(r=>r.name==="max_budget_usd")||e.exec("ALTER TABLE roles ADD COLUMN max_budget_usd REAL"),E.some(r=>r.name==="approval_required")||e.exec("ALTER TABLE roles ADD COLUMN approval_required TEXT"),E.some(r=>r.name==="source")||e.exec("ALTER TABLE roles ADD COLUMN source TEXT DEFAULT 'system'"),e.exec("DROP TABLE IF EXISTS agents"),e.exec("DROP TABLE IF EXISTS role_skills"),e.exec(`
469
469
  CREATE TABLE IF NOT EXISTS tasks_new (
470
470
  id TEXT PRIMARY KEY,
471
471
  parent_id TEXT,
@@ -490,7 +490,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
490
490
  num_turns INTEGER,
491
491
  total_duration_ms INTEGER
492
492
  );
493
- `);let E=new Set(["id","status","prompt","config","created_at"]),s=["id","parent_id","status","prompt","config","result","error","sdk_session_id","template_id","original_prompt","role_id","source_session_id","notify_targets","deliver_to","report_to","created_at","started_at","completed_at","cost_usd","token_usage","num_turns","total_duration_ms"],i=new Set(e.prepare("PRAGMA table_info(tasks)").all().map(t=>t.name)),r=s.map(t=>i.has(t)?E.has(t)?`COALESCE(${t}, '')`:t:"NULL").join(",");e.exec(`INSERT INTO tasks_new SELECT ${r} FROM tasks`),e.exec("DROP TABLE tasks"),e.exec("ALTER TABLE tasks_new RENAME TO tasks"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON tasks(created_at)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_template_id ON tasks(template_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)"),e.exec(`
493
+ `);let T=new Set(["id","status","prompt","config","created_at"]),s=["id","parent_id","status","prompt","config","result","error","sdk_session_id","template_id","original_prompt","role_id","source_session_id","notify_targets","deliver_to","report_to","created_at","started_at","completed_at","cost_usd","token_usage","num_turns","total_duration_ms"],t=new Set(e.prepare("PRAGMA table_info(tasks)").all().map(r=>r.name)),i=s.map(r=>t.has(r)?T.has(r)?`COALESCE(${r}, '')`:r:"NULL").join(",");e.exec(`INSERT INTO tasks_new SELECT ${i} FROM tasks`),e.exec("DROP TABLE tasks"),e.exec("ALTER TABLE tasks_new RENAME TO tasks"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON tasks(created_at)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_template_id ON tasks(template_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)"),e.exec(`
494
494
  CREATE TABLE IF NOT EXISTS chat_sessions_new (
495
495
  id TEXT PRIMARY KEY,
496
496
  status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'archived')),
@@ -516,7 +516,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
516
516
  approved_at INTEGER,
517
517
  reviewed_at INTEGER
518
518
  );
519
- `),e.exec("INSERT INTO task_plans_new SELECT id,task_id,plan_json,status,approval_type,deviation_report_json,learned_rules_json,created_at,approved_at,reviewed_at FROM task_plans"),e.exec("DROP TABLE task_plans"),e.exec("ALTER TABLE task_plans_new RENAME TO task_plans"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plans_task_id ON task_plans(task_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plans_status ON task_plans(status)"),e.prepare("PRAGMA table_info(task_plugins)").all().some(t=>t.name==="skill_id")&&(e.exec(`
519
+ `),e.exec("INSERT INTO task_plans_new SELECT id,task_id,plan_json,status,approval_type,deviation_report_json,learned_rules_json,created_at,approved_at,reviewed_at FROM task_plans"),e.exec("DROP TABLE task_plans"),e.exec("ALTER TABLE task_plans_new RENAME TO task_plans"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plans_task_id ON task_plans(task_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plans_status ON task_plans(status)"),e.prepare("PRAGMA table_info(task_plugins)").all().some(r=>r.name==="skill_id")&&(e.exec(`
520
520
  CREATE TABLE IF NOT EXISTS task_plugins_new (
521
521
  id TEXT PRIMARY KEY,
522
522
  task_id TEXT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
@@ -525,7 +525,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
525
525
  role_id TEXT,
526
526
  used_at INTEGER NOT NULL
527
527
  );
528
- `),e.exec("INSERT INTO task_plugins_new SELECT id,task_id,plugin_path,plugin_name,skill_id,used_at FROM task_plugins"),e.exec("DROP TABLE task_plugins"),e.exec("ALTER TABLE task_plugins_new RENAME TO task_plugins")),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plugins_task_id ON task_plugins(task_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plugins_plugin_path ON task_plugins(plugin_path)"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plugins_role_id ON task_plugins(role_id)"),e.prepare("PRAGMA table_info(approval_rules)").all().some(t=>t.name==="skill_id")&&(e.exec(`
528
+ `),e.exec("INSERT INTO task_plugins_new SELECT id,task_id,plugin_path,plugin_name,skill_id,used_at FROM task_plugins"),e.exec("DROP TABLE task_plugins"),e.exec("ALTER TABLE task_plugins_new RENAME TO task_plugins")),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plugins_task_id ON task_plugins(task_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plugins_plugin_path ON task_plugins(plugin_path)"),e.exec("CREATE INDEX IF NOT EXISTS idx_task_plugins_role_id ON task_plugins(role_id)"),e.prepare("PRAGMA table_info(approval_rules)").all().some(r=>r.name==="skill_id")&&(e.exec(`
529
529
  CREATE TABLE IF NOT EXISTS approval_rules_new (
530
530
  id TEXT PRIMARY KEY,
531
531
  role_id TEXT,
@@ -534,7 +534,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
534
534
  created_at INTEGER NOT NULL,
535
535
  created_by_task_id TEXT REFERENCES tasks(id)
536
536
  );
537
- `),e.exec("INSERT INTO approval_rules_new SELECT id,skill_id,task_pattern,max_risk_level,created_at,created_by_task_id FROM approval_rules"),e.exec("DROP TABLE approval_rules"),e.exec("ALTER TABLE approval_rules_new RENAME TO approval_rules")),e.exec("CREATE INDEX IF NOT EXISTS idx_approval_rules_role_id ON approval_rules(role_id)"),e.prepare("PRAGMA table_info(manager_decisions)").all().some(t=>t.name==="skill_id")&&(e.exec(`
537
+ `),e.exec("INSERT INTO approval_rules_new SELECT id,skill_id,task_pattern,max_risk_level,created_at,created_by_task_id FROM approval_rules"),e.exec("DROP TABLE approval_rules"),e.exec("ALTER TABLE approval_rules_new RENAME TO approval_rules")),e.exec("CREATE INDEX IF NOT EXISTS idx_approval_rules_role_id ON approval_rules(role_id)"),e.prepare("PRAGMA table_info(manager_decisions)").all().some(r=>r.name==="skill_id")&&(e.exec(`
538
538
  CREATE TABLE IF NOT EXISTS manager_decisions_new (
539
539
  id TEXT PRIMARY KEY,
540
540
  task_id TEXT NOT NULL REFERENCES tasks(id),
@@ -544,7 +544,7 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
544
544
  reason TEXT,
545
545
  created_at INTEGER NOT NULL
546
546
  );
547
- `),e.exec("INSERT INTO manager_decisions_new SELECT id,task_id,skill_id,decision_type,boundary_json,reason,created_at FROM manager_decisions"),e.exec("DROP TABLE manager_decisions"),e.exec("ALTER TABLE manager_decisions_new RENAME TO manager_decisions")),e.exec("CREATE INDEX IF NOT EXISTS idx_manager_decisions_task_id ON manager_decisions(task_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_manager_decisions_role_id ON manager_decisions(role_id)"),e.prepare("PRAGMA table_info(channels)").all().some(t=>t.name==="linked_skill_id")&&(e.exec(`
547
+ `),e.exec("INSERT INTO manager_decisions_new SELECT id,task_id,skill_id,decision_type,boundary_json,reason,created_at FROM manager_decisions"),e.exec("DROP TABLE manager_decisions"),e.exec("ALTER TABLE manager_decisions_new RENAME TO manager_decisions")),e.exec("CREATE INDEX IF NOT EXISTS idx_manager_decisions_task_id ON manager_decisions(task_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_manager_decisions_role_id ON manager_decisions(role_id)"),e.prepare("PRAGMA table_info(channels)").all().some(r=>r.name==="linked_skill_id")&&(e.exec(`
548
548
  CREATE TABLE IF NOT EXISTS channels_new (
549
549
  id TEXT PRIMARY KEY,
550
550
  name TEXT NOT NULL,
@@ -566,4 +566,21 @@ import{d as a,f as L}from"./chunk-F2IS5LWD.js";import{c}from"./chunk-FCV2DPZQ.js
566
566
  bound_at INTEGER NOT NULL,
567
567
  PRIMARY KEY (role_id, plugin_id)
568
568
  );
569
- `),e.exec("UPDATE server_state SET schema_version = 10 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(o<11){try{e.exec("ALTER TABLE task_templates RENAME COLUMN skill_preference TO role_preference")}catch(T){let E=e.prepare("PRAGMA table_info(task_templates)").all(),s=E.some(r=>r.name==="role_preference"),i=E.some(r=>r.name==="skill_preference");if(!s&&i)throw T}e.exec("UPDATE server_state SET schema_version = 11 WHERE id = 1")}if(o<12&&(e.prepare("PRAGMA table_info(server_state)").all().some(E=>E.name==="tools_fingerprint")||e.exec("ALTER TABLE server_state ADD COLUMN tools_fingerprint TEXT"),e.exec("UPDATE server_state SET schema_version = 12 WHERE id = 1")),o<13&&(e.prepare("PRAGMA table_info(roles)").all().some(E=>E.name==="additional_directories")||e.exec("ALTER TABLE roles ADD COLUMN additional_directories TEXT"),e.exec("UPDATE server_state SET schema_version = 13 WHERE id = 1")),o<14){let T=e.prepare("PRAGMA table_info(roles)").all();T.some(i=>i.name==="allowed_channels")||e.exec("ALTER TABLE roles ADD COLUMN allowed_channels TEXT"),T.some(i=>i.name==="mcp_servers")||e.exec("ALTER TABLE roles ADD COLUMN mcp_servers TEXT");let E=e.prepare("PRAGMA table_info(tasks)").all();E.some(i=>i.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),E.some(i=>i.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(goals)").all().some(i=>i.name==="deliver_to")||e.exec("ALTER TABLE goals ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 14 WHERE id = 1")}if(o<15&&(e.prepare("PRAGMA table_info(roles)").all().some(E=>E.name==="inherit_user_settings")||e.exec("ALTER TABLE roles ADD COLUMN inherit_user_settings INTEGER DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 15 WHERE id = 1")),o<16&&(e.prepare("PRAGMA table_info(task_templates)").all().some(E=>E.name==="deliver_to")||e.exec("ALTER TABLE task_templates ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 16 WHERE id = 1")),o<17){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS plugins"),e.exec("DROP TABLE IF EXISTS role_plugins"),e.exec("DROP TABLE IF EXISTS marketplaces"),e.exec("DROP INDEX IF EXISTS idx_plugins_source"),e.exec("DROP INDEX IF EXISTS idx_plugins_enabled");try{let s=e.prepare("SELECT id, additional_directories FROM roles WHERE additional_directories IS NOT NULL").all();for(let i of s)try{let r=JSON.parse(i.additional_directories);if(r.length>0&&typeof r[0]=="object"&&r[0]!==null&&"path"in r[0])continue;let l=r.map(n=>typeof n=="string"?{path:n}:n);e.prepare("UPDATE roles SET additional_directories = ? WHERE id = ?").run(JSON.stringify(l),i.id)}catch{}}catch{}let T=e.prepare("PRAGMA table_info(tasks)").all();T.some(s=>s.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),T.some(s=>s.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let E=e.prepare("PRAGMA table_info(strategies)").all();E.some(s=>s.name==="role")&&!E.some(s=>s.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 17 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(o<18){let T=e.prepare("PRAGMA table_info(tasks)").all();T.some(s=>s.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),T.some(s=>s.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let E=e.prepare("PRAGMA table_info(strategies)").all();E.some(s=>s.name==="role")&&!E.some(s=>s.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 18 WHERE id = 1")}}function h(){if(_)return _;let e=process.env.ADAM_DB_PATH||a,N=R(e);return I(N)||A(N,{recursive:!0}),_=new d(e),_.pragma("journal_mode = WAL"),_.pragma("foreign_keys = ON"),X(_),_}function y(){_&&(_.close(),_=null)}var _,O=c(()=>{L();_=null});export{X as a,h as b,y as c,O as d};
569
+ `),e.exec("UPDATE server_state SET schema_version = 10 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(o<11){try{e.exec("ALTER TABLE task_templates RENAME COLUMN skill_preference TO role_preference")}catch(E){let T=e.prepare("PRAGMA table_info(task_templates)").all(),s=T.some(i=>i.name==="role_preference"),t=T.some(i=>i.name==="skill_preference");if(!s&&t)throw E}e.exec("UPDATE server_state SET schema_version = 11 WHERE id = 1")}if(o<12&&(e.prepare("PRAGMA table_info(server_state)").all().some(T=>T.name==="tools_fingerprint")||e.exec("ALTER TABLE server_state ADD COLUMN tools_fingerprint TEXT"),e.exec("UPDATE server_state SET schema_version = 12 WHERE id = 1")),o<13&&(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="additional_directories")||e.exec("ALTER TABLE roles ADD COLUMN additional_directories TEXT"),e.exec("UPDATE server_state SET schema_version = 13 WHERE id = 1")),o<14){let E=e.prepare("PRAGMA table_info(roles)").all();E.some(t=>t.name==="allowed_channels")||e.exec("ALTER TABLE roles ADD COLUMN allowed_channels TEXT"),E.some(t=>t.name==="mcp_servers")||e.exec("ALTER TABLE roles ADD COLUMN mcp_servers TEXT");let T=e.prepare("PRAGMA table_info(tasks)").all();T.some(t=>t.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),T.some(t=>t.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(goals)").all().some(t=>t.name==="deliver_to")||e.exec("ALTER TABLE goals ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 14 WHERE id = 1")}if(o<15&&(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="inherit_user_settings")||e.exec("ALTER TABLE roles ADD COLUMN inherit_user_settings INTEGER DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 15 WHERE id = 1")),o<16&&(e.prepare("PRAGMA table_info(task_templates)").all().some(T=>T.name==="deliver_to")||e.exec("ALTER TABLE task_templates ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 16 WHERE id = 1")),o<17){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS plugins"),e.exec("DROP TABLE IF EXISTS role_plugins"),e.exec("DROP TABLE IF EXISTS marketplaces"),e.exec("DROP INDEX IF EXISTS idx_plugins_source"),e.exec("DROP INDEX IF EXISTS idx_plugins_enabled");try{let s=e.prepare("SELECT id, additional_directories FROM roles WHERE additional_directories IS NOT NULL").all();for(let t of s)try{let i=JSON.parse(t.additional_directories);if(i.length>0&&typeof i[0]=="object"&&i[0]!==null&&"path"in i[0])continue;let c=i.map(n=>typeof n=="string"?{path:n}:n);e.prepare("UPDATE roles SET additional_directories = ? WHERE id = ?").run(JSON.stringify(c),t.id)}catch{}}catch{}let E=e.prepare("PRAGMA table_info(tasks)").all();E.some(s=>s.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),E.some(s=>s.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let T=e.prepare("PRAGMA table_info(strategies)").all();T.some(s=>s.name==="role")&&!T.some(s=>s.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 17 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(o<18){let E=e.prepare("PRAGMA table_info(tasks)").all();E.some(s=>s.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),E.some(s=>s.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let T=e.prepare("PRAGMA table_info(strategies)").all();T.some(s=>s.name==="role")&&!T.some(s=>s.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 18 WHERE id = 1")}e.prepare("PRAGMA table_info(delivery_log)").all().some(E=>E.name==="source")||(e.exec(`
570
+ CREATE TABLE IF NOT EXISTS delivery_log_new (
571
+ id TEXT PRIMARY KEY,
572
+ rule_id TEXT REFERENCES delivery_rules(id),
573
+ task_id TEXT,
574
+ status TEXT NOT NULL DEFAULT 'pending',
575
+ target TEXT NOT NULL,
576
+ content TEXT NOT NULL DEFAULT '',
577
+ attempts INTEGER NOT NULL DEFAULT 0,
578
+ error TEXT,
579
+ created_at INTEGER NOT NULL,
580
+ delivered_at INTEGER,
581
+ expires_at INTEGER NOT NULL,
582
+ source TEXT,
583
+ message_type TEXT
584
+ )
585
+ `),e.exec(`INSERT INTO delivery_log_new (id, rule_id, task_id, status, target, content, attempts, error, created_at, delivered_at, expires_at)
586
+ SELECT id, rule_id, task_id, status, target, content, attempts, error, created_at, delivered_at, expires_at FROM delivery_log`),e.exec("DROP TABLE delivery_log"),e.exec("ALTER TABLE delivery_log_new RENAME TO delivery_log"),e.exec("CREATE INDEX IF NOT EXISTS idx_delivery_log_rule ON delivery_log(rule_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_delivery_log_task ON delivery_log(task_id)")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<20&&(e.prepare("PRAGMA table_info(goals)").all().some(s=>s.name==="report_to")||e.exec("ALTER TABLE goals ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(task_templates)").all().some(s=>s.name==="report_to")||e.exec("ALTER TABLE task_templates ADD COLUMN report_to TEXT"),e.exec("UPDATE goals SET report_to = notify_targets WHERE notify_targets IS NOT NULL"),e.exec("UPDATE task_templates SET report_to = notify_targets WHERE notify_targets IS NOT NULL"),e.exec("UPDATE server_state SET schema_version = 20 WHERE id = 1")),e.prepare("PRAGMA table_info(config)").all().some(E=>E.name==="updated_at")||(e.exec("ALTER TABLE config ADD COLUMN updated_at INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 21 WHERE id = 1"));let l=e.prepare("PRAGMA table_info(memories)").all();l.some(E=>E.name==="tier")||(e.exec("ALTER TABLE memories ADD COLUMN tier TEXT NOT NULL DEFAULT 'episodic'"),e.exec("CREATE INDEX IF NOT EXISTS idx_memories_tier ON memories(tier)")),l.some(E=>E.name==="superseded_by")||(e.exec("ALTER TABLE memories ADD COLUMN superseded_by TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_memories_superseded ON memories(superseded_by)"));let a=e.prepare("PRAGMA table_info(memories)").all();a.some(E=>E.name==="tier")&&a.some(E=>E.name==="superseded_by")&&(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<22&&e.exec("UPDATE server_state SET schema_version = 22 WHERE id = 1")}function w(){if(_)return _;let e=process.env.ADAM_DB_PATH||L,N=m(e);return R(N)||X(N,{recursive:!0}),_=new I(e),_.pragma("journal_mode = WAL"),_.pragma("foreign_keys = ON"),_.pragma("trusted_schema = ON"),O(_),_}function B(){_&&(_.close(),_=null)}var _,p=d(()=>{A();_=null});export{O as a,w as b,B as c,p as d};
@@ -1,4 +1,4 @@
1
- import{b as s,d as i}from"./chunk-W6JITSZF.js";i();function l(e){return{id:e.id,name:e.name,platform:e.platform,enabled:e.enabled===1,status:e.status,config:JSON.parse(e.config),linkedRoleId:e.linked_role_id??void 0,allowedChatIds:e.allowed_chat_ids?JSON.parse(e.allowed_chat_ids):void 0,createdAt:e.created_at,updatedAt:e.updated_at??void 0,lastMessageAt:e.last_message_at??void 0,messageCount:e.message_count}}function o(e){s().prepare(`
1
+ import{b as s,d as i}from"./chunk-PCSZW2PE.js";i();function l(e){return{id:e.id,name:e.name,platform:e.platform,enabled:e.enabled===1,status:e.status,config:JSON.parse(e.config),linkedRoleId:e.linked_role_id??void 0,allowedChatIds:e.allowed_chat_ids?JSON.parse(e.allowed_chat_ids):void 0,createdAt:e.created_at,updatedAt:e.updated_at??void 0,lastMessageAt:e.last_message_at??void 0,messageCount:e.message_count}}function o(e){s().prepare(`
2
2
  INSERT INTO channels (id, name, platform, enabled, status, config, linked_role_id,
3
3
  allowed_chat_ids, created_at, updated_at, last_message_at, message_count)
4
4
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -1 +1 @@
1
- import{c as s}from"./chunk-FCV2DPZQ.js";import{join as o}from"path";import{homedir as e}from"os";var c,n,t,p,_,a,E,D,i,r=s(()=>{"use strict";c=["Read","Write","Edit","Bash","Grep","Glob","WebSearch","WebFetch","LSP","NotebookEdit","Agent"],n=["~/.ssh","~/.aws","~/.gnupg","/etc/shadow"],t=o(e(),".adam"),p=o(t,"adam.db"),_=o(t,"adam.config.yaml"),a=o(t,".env"),E=o(t,"CLAUDE.md"),D=o(t,"logs"),i=10*1024});export{c as a,n as b,t as c,p as d,_ as e,r as f};
1
+ import{c as s}from"./chunk-FCV2DPZQ.js";import{join as o}from"path";import{homedir as e}from"os";var c,n,t,p,_,a,E,D,i,r=s(()=>{"use strict";c=["Read","Write","Edit","Bash","Grep","Glob","WebSearch","WebFetch","LSP","NotebookEdit","Agent"],n=["~/.ssh","~/.aws","~/.gnupg","/etc/shadow"],t=o(e(),".adam"),p=o(t,"adam.db"),_=o(t,"adam.config.yaml"),a=o(t,".env"),E=o(t,"CLAUDE.md"),D=o(t,"logs"),i=10*1024});export{c as a,n as b,t as c,p as d,_ as e,a as f,r as g};
@@ -0,0 +1 @@
1
+ import{a as i}from"./chunk-ETQ7KC73.js";import{d as a}from"./chunk-FYDFMYUP.js";import{e as u,g as C}from"./chunk-SFUS33SO.js";C();import{readFileSync as m,existsSync as v}from"fs";import{resolve as y}from"path";import{homedir as _}from"os";import{parse as R}from"yaml";function O(e){return e.replace(/\$\{(\w+)}/g,(r,t)=>process.env[t]??"")}function l(e){return e.startsWith("~/")?y(_(),e.slice(2)):e}function f(e){if(typeof e=="string")return O(e);if(Array.isArray(e))return e.map(f);if(e!==null&&typeof e=="object"){let r={};for(let[t,n]of Object.entries(e))r[t]=f(n);return r}return e}function p(e,r){let t={...e};for(let n of Object.keys(r)){let o=r[n],s=e[n];o!==null&&typeof o=="object"&&!Array.isArray(o)&&s!==null&&typeof s=="object"&&!Array.isArray(s)?t[n]=p(s,o):t[n]=o}return t}function d(e){return e.defaults.fileAccess.allowedPaths=e.defaults.fileAccess.allowedPaths.map(l),e.defaults.fileAccess.deniedPaths=e.defaults.fileAccess.deniedPaths.map(l),e}function P(){let e={};for(let r of process.argv.slice(2)){let t=r.match(/^--([a-z-]+)=(.+)$/);t&&(e[t[1]]=t[2])}return e}function g(e){let r=process.env.ADAM_PORT;r&&(e.server.port=parseInt(r,10));let t=process.env.ANTHROPIC_MODEL;t&&(e.defaults.model=t);let n=process.env.ADAM_API_KEY;return n&&(e.server.apiKey=n),e}function h(e){let r=P();return r.port&&(e.server.port=parseInt(r.port,10)),r.host&&(e.server.host=r.host),r.timeout&&(e.defaults.timeout=parseInt(r.timeout,10)),r["api-key"]&&(e.server.apiKey=r["api-key"]),e}function w(e){let r=e??u,t={};if(v(r)){let A=m(r,"utf-8"),c=R(A);c&&(t=f(c))}let n=p(i,t),o=g(n),s=h(o);return d(s)}function E(){let e=JSON.parse(JSON.stringify(i)),r=g(e),t=h(r);return d(t)}function L(){let e={},r={ANTHROPIC_API_KEY:"anthropic.apiKey",ANTHROPIC_BASE_URL:"anthropic.baseUrl",ANTHROPIC_MODEL:"anthropic.model",ANTHROPIC_DEFAULT_OPUS_MODEL:"anthropic.defaultOpusModel",ANTHROPIC_DEFAULT_SONNET_MODEL:"anthropic.defaultSonnetModel",ANTHROPIC_DEFAULT_HAIKU_MODEL:"anthropic.defaultHaikuModel",ANTHROPIC_SMALL_FAST_MODEL:"anthropic.smallFastModel",ADAM_PORT:"server.port",ADAM_API_KEY:"server.apiKey"};for(let[t,n]of Object.entries(r)){let o=process.env[t];if(o&&o.length>0)if(n==="server.port"){let s=parseInt(o,10);isNaN(s)||(e[n]=s)}else e[n]=o}return e}function x(){try{return a().defaults}catch{return i.defaults}}function K(){try{return a().chat??i.chat}catch{return i.chat}}export{w as a,E as b,L as c,x as d,K as e};
@@ -0,0 +1,19 @@
1
+ import{b as s,f as y}from"./chunk-U36NBCR3.js";import{e as i,f as p,i as f,l as h}from"./chunk-XNWZZYAV.js";import{c as g}from"./chunk-3DAK2XWP.js";h();y();import{v4 as c}from"uuid";var t=g("store"),a="role-chat-manager",l=[{name:"Engineer",cagPrompt:`Role: General-purpose software engineer.
2
+ Capabilities: Read, write, and edit code; run shell commands; search codebases.
3
+ Approach: Analyze requirements \u2192 implement \u2192 test \u2192 verify. Write tests for new code. Follow existing code patterns.
4
+ Best for: Feature implementation, bug fixes, refactoring, build/deploy scripts.
5
+ Constraints: No web access. Works only within the assigned workspace directory.`,allowedTools:["Read","Write","Edit","Bash","Grep","Glob"],evaluationCriteria:{code_quality:4,test_pass:4,build_success:3},executionMode:"isolated"},{name:"Reviewer",cagPrompt:`Role: Code reviewer and security auditor. READ-ONLY \u2014 you do not modify files.
6
+ Capabilities: Read files, search code, run analysis commands (linters, type-checkers, test suites).
7
+ Approach: Systematically review code for bugs, security issues, performance problems, and style violations. Output structured findings with file:line references.
8
+ Best for: Code review, security audit, dependency audit, test coverage analysis.
9
+ Constraints: No Write or Edit tools. Cannot modify code \u2014 only report findings.`,allowedTools:["Read","Grep","Glob","Bash"],evaluationCriteria:{bug_detection_rate:5,insight_quality:4},executionMode:"isolated"},{name:"Researcher",cagPrompt:`Role: Information researcher and analyst with web access.
10
+ Capabilities: Search the web, fetch web pages, read local files, run data processing scripts.
11
+ Approach: Gather information from multiple sources \u2192 cross-reference \u2192 synthesize findings into structured reports.
12
+ Best for: Market research, technical investigation, API documentation lookup, competitive analysis, news monitoring.
13
+ Constraints: No file write/edit permissions. Cannot modify the codebase \u2014 only research and report.`,allowedTools:["WebSearch","WebFetch","Read","Grep","Glob","Bash"],evaluationCriteria:{insight_quality:5,data_accuracy:5},executionMode:"isolated"},{name:"Writer",cagPrompt:`Role: Content writer and document generator.
14
+ Capabilities: Create and edit text files, read reference material, search for context.
15
+ Approach: Understand the target audience and format \u2192 draft \u2192 refine. Match the project's existing tone and terminology.
16
+ Best for: Documentation, reports, emails, translations, summaries, changelog entries.
17
+ Constraints: No shell command execution. No web access. Works only with file read/write operations.`,allowedTools:["Read","Write","Edit","Grep","Glob"],evaluationCriteria:{content_quality:5,engagement:4},executionMode:"isolated"}];function x(){w();let r=f(void 0,1e3,0),o=new Set(l.map(e=>e.name)),d=r.filter(e=>o.has(e.name));if(d.length>0)return t.info({count:d.length},"Default roles already exist, skipping"),r;t.info({count:l.length},"Creating default roles");let u=[];for(let e of l){let m=`role-${c().slice(0,8)}`,n={id:m,name:e.name,cagPrompt:e.cagPrompt,learnedRules:[],memoryStreamId:`mem-${c().slice(0,8)}`,status:"active",preferences:{},createdAt:Date.now(),allowedTools:e.allowedTools,evaluationCriteria:e.evaluationCriteria,executionMode:e.executionMode};i(n),u.push(n),s(n),t.info({roleId:m,name:e.name},"Created default role")}return u}function w(){if(p(a)){t.debug({roleId:a},"ChatManager system role already exists");return}let o={id:a,name:"Chat Manager",cagPrompt:`You are the Chat Manager \u2014 orchestrating conversations and managing agent interactions.
18
+ You coordinate between user requests and agent execution, maintaining conversation context
19
+ and routing tasks to the appropriate roles. You have broad memory access across all roles.`,learnedRules:[],memoryStreamId:`mem-${c().slice(0,8)}`,status:"active",preferences:{},createdAt:Date.now()};i(o),s(o),t.info({roleId:a},"Created ChatManager system role")}export{a,x as b};
@@ -0,0 +1,17 @@
1
+ import{c as o,g as p}from"./chunk-SFUS33SO.js";import{c as m,e as g}from"./chunk-FCV2DPZQ.js";var y={};g(y,{ensureRoleWorkspace:()=>h,getRoleWorkspacePath:()=>c,syncRoleSettings:()=>d,writeRoleCLAUDEmd:()=>u});import{mkdirSync as i,writeFileSync as a}from"fs";import{join as s,basename as f}from"path";function c(n){let e=f(n);if(e!==n||!n)throw new Error(`Invalid role name for workspace: ${n}`);return s(R,"roles",e)}function h(n){let e=c(n.name);return i(e,{recursive:!0}),i(s(e,".claude"),{recursive:!0}),u(e,n),d(n.id,n.allowedTools,e),e}function u(n,e){let r=e.learnedRules&&e.learnedRules.length>0?e.learnedRules.map(l=>`- ${l}`).join(`
2
+ `):"(no learned rules yet)",t=`# ${e.name}
3
+
4
+ ${e.cagPrompt}
5
+
6
+ ## Learned Rules
7
+ ${r}
8
+ `;e.name==="chat-manager"&&(t+=`
9
+
10
+ ## Compaction Instructions
11
+ When summarizing, preserve:
12
+ - Active task IDs and their current status
13
+ - User's pending requests not yet addressed
14
+ - Key decisions made and their rationale
15
+ - Role assignments and execution outcomes
16
+ - Channel/session routing context
17
+ `),a(s(n,"CLAUDE.md"),t,"utf-8")}function d(n,e,r){let t={};e&&(t.allowedTools=e),a(s(r,".claude","settings.json"),JSON.stringify(t,null,2),"utf-8")}var R,v=m(()=>{"use strict";p();R=process.env.ADAM_TEST_DIR||o});export{c as a,h as b,u as c,d,y as e,v as f};
@@ -0,0 +1,3 @@
1
+ import{b as $}from"./chunk-PQ7KPALO.js";import{b as k,c as f,d as h}from"./chunk-FDWW245P.js";import{a as p}from"./chunk-L7JP7DUO.js";import{c as b}from"./chunk-3DAK2XWP.js";function D(a,c,n){switch(c){case"wechat":return M(a);case"telegram":return a;case"slack":return E(a);case"webhook":return JSON.stringify({result:a,taskId:n,timestamp:new Date().toISOString()});default:return M(a)}}function M(a){return a.replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/__(.+?)__/g,"$1").replace(/_(.+?)_/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/```[\s\S]*?```/g,c=>c.replace(/```\w*\n?/g,"").trim()).replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\n{3,}/g,`
2
+
3
+ `).trim()}function E(a){return a.replace(/\*\*(.+?)\*\*/g,"*$1*").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"<$2|$1>")}import{v4 as O}from"uuid";var x=b("adam"),_=class{_dedupCache=new Map;_rateLimitWindows=new Map;_recentlySentIds=new Set;isRecentlySent(c){return this._recentlySentIds.has(c)}async send(c){let{taskId:n,channelId:s,chatId:d,content:y,messageType:i,platform:C,webhookUrl:m,replyMarkup:I}=c,S=i!=="reply"&&!!n;if(S){let t=`${n}:${s??"none"}:${d??"none"}:${i}`,r=this._dedupCache.get(t);if(r&&Date.now()-r.timestamp<300*1e3)return x.debug({dedupKey:t},"Dedup hit, returning cached log entry"),{success:!0,logEntryId:r.logEntryId}}if(s){let t=Date.now(),r=6e4,o=this._rateLimitWindows.get(s);o||(o=[],this._rateLimitWindows.set(s,o));let u=t-r;for(;o.length>0&&o[0]<u;)o.shift();if(o.length>=60){let l=O();return x.warn({channelId:s,count:o.length},"Rate limited, not sending"),{success:!1,logEntryId:l,error:"rate_limited"}}o.push(t)}let T=C??(s?$(s)?.platform:void 0)??"unknown",v=m?y:D(y,T,n),e=O(),g={id:e,ruleId:void 0,taskId:n??void 0,status:"pending",target:s&&d?{type:"channel",channelId:s,chatId:d}:m?{type:"webhook",webhookUrl:m}:{type:"channel",channelId:s??"",chatId:d??""},content:v,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:i};k(g);try{if(m){let t=await fetch(m,{method:"POST",body:JSON.stringify({result:y,taskId:n,timestamp:new Date().toISOString()}),signal:AbortSignal.timeout(1e4)});if(t.ok)return h(e),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"delivered",messageType:i}),{success:!0,logEntryId:e};{let r=`Webhook returned ${t.status}`;return f(e,"failed",r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:r,messageType:i}),{success:!1,logEntryId:e,error:r}}}else if(s&&d){let{getChannelManager:t}=await import("./channels-WFZAONF3.js"),r=t();if(!r){let l="ChannelManager not available";return f(e,"failed",l),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:l,messageType:i}),{success:!1,logEntryId:e,error:l}}let o={content:v,...I?{replyMarkup:I}:{}},u=await r.sendMessage(s,d,o);if(u&&(this._recentlySentIds.add(u),setTimeout(()=>this._recentlySentIds.delete(u),300*1e3)),h(e),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"delivered",messageType:i}),S){let l=`${n}:${s??"none"}:${d??"none"}:${i}`;this._dedupCache.set(l,{logEntryId:e,timestamp:Date.now()})}return{success:!0,messageId:u??void 0,logEntryId:e}}else{let t="No channelId/chatId or webhookUrl provided";return f(e,"failed",t),{success:!1,logEntryId:e,error:t}}}catch(t){let r=t instanceof Error?t.message:String(t);return f(e,"failed",r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:r,messageType:i}),{success:!1,logEntryId:e,error:r}}}},w=null;function R(){return w||(w=new _),w}function G(a){return R().isRecentlySent(a)}export{_ as a,R as b,G as c};
@@ -0,0 +1,6 @@
1
+ import{b as s,d as l}from"./chunk-PCSZW2PE.js";l();function o(e){let n={type:e.trigger_type,cron:e.trigger_type==="once"?void 0:e.trigger_cron??void 0,event:e.trigger_event??void 0,runAt:e.trigger_type==="once"?e.trigger_cron??void 0:void 0};return{id:e.id,name:e.name,description:e.description??void 0,trigger:n,steps:JSON.parse(e.steps),rolePreference:e.role_preference??void 0,config:e.config?JSON.parse(e.config):void 0,tags:e.tags?JSON.parse(e.tags):void 0,enabled:e.enabled===1,createdAt:e.created_at,updatedAt:e.updated_at??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0,goalIds:e.goal_ids?JSON.parse(e.goal_ids):void 0}}function u(e){s().prepare(`
2
+ INSERT INTO task_templates (id, name, description, trigger_type, trigger_cron,
3
+ trigger_event, steps, role_preference, config, tags, enabled, created_at, updated_at,
4
+ source_session_id, deliver_to, report_to, goal_ids)
5
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
6
+ `).run(e.id,e.name,e.description??null,e.trigger.type,e.trigger.type==="once"?e.trigger.runAt??null:e.trigger.cron??null,e.trigger.event??null,JSON.stringify(e.steps),e.rolePreference??null,e.config?JSON.stringify(e.config):null,e.tags?JSON.stringify(e.tags):null,e.enabled?1:0,e.createdAt??Date.now(),e.updatedAt??null,e.sourceSessionId??null,e.deliverTo?JSON.stringify(e.deliverTo):null,e.reportTo?JSON.stringify(e.reportTo):null,e.goalIds?JSON.stringify(e.goalIds):null)}function p(e){let t=s().prepare("SELECT * FROM task_templates WHERE id = ?").get(e);return t?o(t):void 0}function f(e,n){let t=s(),i=[],r=[];"name"in n&&(i.push("name = ?"),r.push(n.name)),"description"in n&&(i.push("description = ?"),r.push(n.description??null)),"trigger"in n&&n.trigger&&(i.push("trigger_type = ?"),r.push(n.trigger.type),i.push("trigger_cron = ?"),r.push(n.trigger.type==="once"?n.trigger.runAt??null:n.trigger.cron??null),i.push("trigger_event = ?"),r.push(n.trigger.event??null)),"steps"in n&&(i.push("steps = ?"),r.push(JSON.stringify(n.steps))),"rolePreference"in n&&(i.push("role_preference = ?"),r.push(n.rolePreference??null)),"config"in n&&(i.push("config = ?"),r.push(n.config?JSON.stringify(n.config):null)),"tags"in n&&(i.push("tags = ?"),r.push(n.tags?JSON.stringify(n.tags):null)),"enabled"in n&&(i.push("enabled = ?"),r.push(n.enabled?1:0)),"sourceSessionId"in n&&(i.push("source_session_id = ?"),r.push(n.sourceSessionId??null)),"deliverTo"in n&&(i.push("deliver_to = ?"),r.push(n.deliverTo?JSON.stringify(n.deliverTo):null)),"reportTo"in n&&(i.push("report_to = ?"),r.push(n.reportTo?JSON.stringify(n.reportTo):null)),"goalIds"in n&&(i.push("goal_ids = ?"),r.push(n.goalIds?JSON.stringify(n.goalIds):null)),i.length!==0&&(i.push("updated_at = ?"),r.push(Date.now()),r.push(e),t.prepare(`UPDATE task_templates SET ${i.join(", ")} WHERE id = ?`).run(...r))}function c(e=!1,n=100,t=0){let i=s(),r="SELECT * FROM task_templates",g=[];return e&&(r+=" WHERE enabled = 1"),r+=" ORDER BY created_at ASC LIMIT ? OFFSET ?",g.push(n,t),i.prepare(r).all(...g).map(o)}function T(e){s().prepare("UPDATE task_templates SET enabled = 1, updated_at = ? WHERE id = ?").run(Date.now(),e)}function _(e){s().prepare("UPDATE task_templates SET enabled = 0, updated_at = ? WHERE id = ?").run(Date.now(),e)}function h(e){s().prepare("DELETE FROM task_templates WHERE id = ?").run(e)}export{u as a,p as b,f as c,c as d,T as e,_ as f,h as g};
@@ -0,0 +1,6 @@
1
+ import{b as i,d as l}from"./chunk-PCSZW2PE.js";l();function o(e){return{id:e.id,name:e.name,description:e.description??void 0,roleId:e.role,metricType:e.metric_type,targetValue:e.target_value,currentValue:e.current_value,deadline:e.deadline,budgetUsd:e.budget_usd,status:e.status,createdAt:e.created_at,updatedAt:e.updated_at??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0}}function c(e){i().prepare(`
2
+ INSERT INTO goals (id, name, description, role, metric_type, target_value,
3
+ current_value, deadline, budget_usd, status, created_at, updated_at,
4
+ source_session_id, deliver_to, report_to)
5
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
6
+ `).run(e.id,e.name,e.description??null,e.roleId,e.metricType,e.targetValue,e.currentValue,e.deadline,e.budgetUsd,e.status,e.createdAt,e.updatedAt??null,e.sourceSessionId??null,e.deliverTo?JSON.stringify(e.deliverTo):null,e.reportTo?JSON.stringify(e.reportTo):null)}function _(e){let s=i().prepare("SELECT * FROM goals WHERE id = ?").get(e);return s?o(s):void 0}function g(e,t){let s=i(),n=[],r=[],d={name:"name",description:"description",roleId:"role",metricType:"metric_type",targetValue:"target_value",currentValue:"current_value",deadline:"deadline",budgetUsd:"budget_usd",status:"status",updatedAt:"updated_at",sourceSessionId:"source_session_id"};for(let[u,a]of Object.entries(d))u in t&&(n.push(`${a} = ?`),r.push(t[u]??null));"deliverTo"in t&&(n.push("deliver_to = ?"),r.push(JSON.stringify(t.deliverTo))),"reportTo"in t&&(n.push("report_to = ?"),r.push(JSON.stringify(t.reportTo))),n.length!==0&&(r.push(e),s.prepare(`UPDATE goals SET ${n.join(", ")} WHERE id = ?`).run(...r))}function f(e,t=100,s=0){let n=i(),r="SELECT * FROM goals",d=[];return e&&(r+=" WHERE status = ?",d.push(e)),r+=" ORDER BY created_at DESC LIMIT ? OFFSET ?",d.push(t,s),n.prepare(r).all(...d).map(o)}function m(e){i().prepare("DELETE FROM goals WHERE id = ?").run(e)}export{c as a,_ as b,g as c,f as d,m as e};
@@ -0,0 +1 @@
1
+ import{c as S}from"./chunk-3DAK2XWP.js";import*as s from"fs";import*as l from"path";import{homedir as x}from"os";var v=S("embedding"),M=null,A=!1;async function L(){if(A)throw new Error("onnxruntime-node native binding not available. Embedding disabled.");if(!M)try{M=await import("./dist-CDWBOTZS.js")}catch(e){throw A=!0,v.warn({error:e.message},"onnxruntime-node not available"),new Error("onnxruntime-node native binding not available. Embedding disabled.")}return M}var F=l.join(x(),".adam","models"),P="all-MiniLM-L6-v2",T="model.onnx",B="tokenizer.json",N="https://huggingface.co/Xenova/all-MiniLM-L6-v2/resolve/main/onnx/model_quantized.onnx",O="https://huggingface.co/Xenova/all-MiniLM-L6-v2/resolve/main/tokenizer.json",j=384,y=null,k=null;function z(){let e=l.join(F,P);return s.existsSync(e)||s.mkdirSync(e,{recursive:!0}),e}async function _(e,t){if(s.existsSync(t))return;v.info({file:l.basename(t)},"Downloading model file");let f=await fetch(e);if(!f.ok)throw new Error(`Failed to download ${e}: ${f.status}`);let i=Buffer.from(await f.arrayBuffer());s.writeFileSync(t,i),v.info({file:l.basename(t),sizeMb:(i.length/1024/1024).toFixed(1)},"Model file downloaded")}async function R(){let e=z(),t=l.join(e,T),f=l.join(e,B);return await _(N,t),await _(O,f),t}function U(){if(k)return k;let e=l.join(z(),B);if(!s.existsSync(e))throw new Error("Tokenizer not found. Run generateEmbedding first to download.");return k=JSON.parse(s.readFileSync(e,"utf-8")),k}function $(e,t=128){let i=U().model.vocab,w=i["[CLS]"]??101,I=i["[SEP]"]??102,u=i["[UNK]"]??100,E=i["[PAD]"]??0,p=e.toLowerCase().replace(/[^\w\s\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff]/g," ").split(/\s+/).filter(Boolean),r=[w];for(let o of p){if(r.length>=t-1)break;if(i[o]!==void 0){r.push(i[o]);continue}let d=!1,n=o,m=!0;for(;n.length>0&&r.length<t-1;){let D=!1;for(let g=n.length;g>0;g--){let b=m?n.slice(0,g):`##${n.slice(0,g)}`;if(i[b]!==void 0){r.push(i[b]),n=n.slice(g),m=!1,D=!0,d=!0;break}}if(!D)if(n.length>=2){let g=n.slice(0,2),b=i[g]??i[`##${g}`]??u;r.push(b),n=n.slice(2),d=!0}else r.push(u),n=""}d||r.push(u)}r.push(I);let h=new BigInt64Array(t),a=new BigInt64Array(t),c=new BigInt64Array(t);for(let o=0;o<t;o++)o<r.length?(h[o]=BigInt(r[o]),a[o]=1n):(h[o]=BigInt(E),a[o]=0n),c[o]=0n;return{inputIds:h,attentionMask:a,tokenTypeIds:c}}async function q(){if(y)return y;let e=await L(),t=await R();return y=await e.InferenceSession.create(t,{executionProviders:["cpu"]}),y}async function X(e){let t=await L(),f=await q(),{inputIds:i,attentionMask:w,tokenTypeIds:I}=$(e),u=i.length,E={input_ids:new t.Tensor("int64",i,[1,u]),attention_mask:new t.Tensor("int64",w,[1,u]),token_type_ids:new t.Tensor("int64",I,[1,u])},p=await f.run(E),h=(p.last_hidden_state??p[Object.keys(p)[0]]).data,a=j,c=new Float32Array(a),o=0;for(let n=0;n<u;n++)if(w[n]===1n){o++;for(let m=0;m<a;m++)c[m]+=h[n*a+m]}if(o>0)for(let n=0;n<a;n++)c[n]/=o;let d=0;for(let n=0;n<a;n++)d+=c[n]*c[n];if(d=Math.sqrt(d),d>0)for(let n=0;n<a;n++)c[n]/=d;return c}function Z(){let e=l.join(z(),T);return s.existsSync(e)}export{X as a,Z as b};
@@ -1,4 +1,4 @@
1
- import{b as l,d as v}from"./chunk-W6JITSZF.js";import{b as d,f as m}from"./chunk-F2IS5LWD.js";import{c as h,e as R}from"./chunk-FCV2DPZQ.js";import*as g from"os";import*as o from"path";function a(e){return e.startsWith("~/")||e==="~"?o.join(g.homedir(),e.slice(1)):e}function u(e){return a(e)}function P(e,n){let t=[];if(typeof n.file_path=="string"&&t.push(n.file_path),typeof n.path=="string"&&t.push(n.path),typeof n.pattern=="string"&&e==="Glob"){let i=n.pattern,r=o.dirname(i);r!=="."&&t.push(r)}if(e==="Bash"&&typeof n.command=="string"){let r=n.command.match(/(?:~\/|\/)[^\s;|&><"']+/g);r&&t.push(...r)}return t}function I(e,n,t){let i=o.resolve(n,a(e));for(let r of d){let s=a(r);if(i.startsWith(s))return{allowed:!1,reason:`Access to ${r} is always denied (hardcoded security rule)`}}for(let r of t.deniedPaths){let s=o.resolve(n,a(r));if(i.startsWith(s))return{allowed:!1,reason:`Access to ${r} is denied by agent permission`}}return t.allowedPaths.length>0&&!t.allowedPaths.some(s=>{let p=o.resolve(n,a(s));return i.startsWith(p)})?{allowed:!1,reason:`Path ${e} is outside allowed paths: ${t.allowedPaths.join(", ")}`}:{allowed:!0}}var _=h(()=>{"use strict";m()});var N={};R(N,{createRole:()=>E,deleteRole:()=>x,getRole:()=>O,getRoleByName:()=>w,listRoles:()=>T,updateRole:()=>D,validateAdditionalDirectories:()=>c});import{existsSync as y}from"fs";import{resolve as S}from"path";function c(e){for(let n of e){let t=typeof n=="string"?n:n.path;if(!t.startsWith("/")&&!t.startsWith("~/")&&t!=="~")throw new Error(`additionalDirectories must be absolute paths: '${t}' is not absolute`);let i=S(u(t));if(!i.startsWith("/"))throw new Error(`additionalDirectories must be absolute paths: '${t}' is not absolute`);for(let r of d){let s=S(u(r));if(i.startsWith(s))throw new Error(`additionalDirectories cannot include hardcoded denied path: '${t}' matches '${r}'`)}if(!y(i))throw new Error(`additionalDirectories path does not exist: '${t}'`)}}function f(e){return{id:e.id,name:e.name,cagPrompt:e.cag_prompt,learnedRules:e.learned_rules?JSON.parse(e.learned_rules):[],memoryStreamId:e.memory_stream_id,status:e.status,performanceScore:e.performance_score??void 0,preferences:e.preferences?JSON.parse(e.preferences):{},createdAt:e.created_at,updatedAt:e.updated_at??void 0,allowedTools:e.allowed_tools?JSON.parse(e.allowed_tools):void 0,disallowedTools:e.disallowed_tools?JSON.parse(e.disallowed_tools):void 0,evaluationCriteria:e.evaluation_criteria?JSON.parse(e.evaluation_criteria):void 0,executionMode:e.execution_mode??void 0,model:e.model??void 0,maxBudgetUsd:e.max_budget_usd??void 0,approvalRequired:e.approval_required?JSON.parse(e.approval_required):void 0,source:e.source??void 0,additionalDirectories:(()=>{if(e.additional_directories!==null)try{let n=JSON.parse(e.additional_directories);return Array.isArray(n)?n.map(t=>typeof t=="string"?{path:t}:t):void 0}catch{return}})(),allowedChannels:e.allowed_channels?JSON.parse(e.allowed_channels):void 0,mcpServers:e.mcp_servers?JSON.parse(e.mcp_servers):void 0,inheritUserSettings:e.inherit_user_settings===1?!0:void 0}}function E(e){e.additionalDirectories&&c(e.additionalDirectories),l().prepare(`
1
+ import{b as l,d as v}from"./chunk-PCSZW2PE.js";import{b as d,g as m}from"./chunk-SFUS33SO.js";import{c as h,e as R}from"./chunk-FCV2DPZQ.js";import*as g from"os";import*as o from"path";function a(e){return e.startsWith("~/")||e==="~"?o.join(g.homedir(),e.slice(1)):e}function u(e){return a(e)}function P(e,n){let t=[];if(typeof n.file_path=="string"&&t.push(n.file_path),typeof n.path=="string"&&t.push(n.path),typeof n.pattern=="string"&&e==="Glob"){let i=n.pattern,r=o.dirname(i);r!=="."&&t.push(r)}if(e==="Bash"&&typeof n.command=="string"){let r=n.command.match(/(?:~\/|\/)[^\s;|&><"']+/g);r&&t.push(...r)}return t}function I(e,n,t){let i=o.resolve(n,a(e));for(let r of d){let s=a(r);if(i.startsWith(s))return{allowed:!1,reason:`Access to ${r} is always denied (hardcoded security rule)`}}for(let r of t.deniedPaths){let s=o.resolve(n,a(r));if(i.startsWith(s))return{allowed:!1,reason:`Access to ${r} is denied by agent permission`}}return t.allowedPaths.length>0&&!t.allowedPaths.some(s=>{let p=o.resolve(n,a(s));return i.startsWith(p)})?{allowed:!1,reason:`Path ${e} is outside allowed paths: ${t.allowedPaths.join(", ")}`}:{allowed:!0}}var _=h(()=>{"use strict";m()});var N={};R(N,{createRole:()=>E,deleteRole:()=>x,getRole:()=>O,getRoleByName:()=>w,listRoles:()=>T,updateRole:()=>D,validateAdditionalDirectories:()=>c});import{existsSync as y}from"fs";import{resolve as S}from"path";function c(e){for(let n of e){let t=typeof n=="string"?n:n.path;if(!t.startsWith("/")&&!t.startsWith("~/")&&t!=="~")throw new Error(`additionalDirectories must be absolute paths: '${t}' is not absolute`);let i=S(u(t));if(!i.startsWith("/"))throw new Error(`additionalDirectories must be absolute paths: '${t}' is not absolute`);for(let r of d){let s=S(u(r));if(i.startsWith(s))throw new Error(`additionalDirectories cannot include hardcoded denied path: '${t}' matches '${r}'`)}if(!y(i))throw new Error(`additionalDirectories path does not exist: '${t}'`)}}function f(e){return{id:e.id,name:e.name,cagPrompt:e.cag_prompt,learnedRules:e.learned_rules?JSON.parse(e.learned_rules):[],memoryStreamId:e.memory_stream_id,status:e.status,performanceScore:e.performance_score??void 0,preferences:e.preferences?JSON.parse(e.preferences):{},createdAt:e.created_at,updatedAt:e.updated_at??void 0,allowedTools:e.allowed_tools?JSON.parse(e.allowed_tools):void 0,disallowedTools:e.disallowed_tools?JSON.parse(e.disallowed_tools):void 0,evaluationCriteria:e.evaluation_criteria?JSON.parse(e.evaluation_criteria):void 0,executionMode:e.execution_mode??void 0,model:e.model??void 0,maxBudgetUsd:e.max_budget_usd??void 0,approvalRequired:e.approval_required?JSON.parse(e.approval_required):void 0,source:e.source??void 0,additionalDirectories:(()=>{if(e.additional_directories!==null)try{let n=JSON.parse(e.additional_directories);return Array.isArray(n)?n.map(t=>typeof t=="string"?{path:t}:t):void 0}catch{return}})(),allowedChannels:e.allowed_channels?JSON.parse(e.allowed_channels):void 0,mcpServers:e.mcp_servers?JSON.parse(e.mcp_servers):void 0,inheritUserSettings:e.inherit_user_settings===1?!0:void 0}}function E(e){e.additionalDirectories&&c(e.additionalDirectories),l().prepare(`
2
2
  INSERT INTO roles (id, name, cag_prompt, learned_rules, memory_stream_id, status,
3
3
  performance_score, preferences, created_at, updated_at,
4
4
  allowed_tools, disallowed_tools, evaluation_criteria, execution_mode, model,
package/dist/cli.js CHANGED
@@ -1,15 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import{a as G,b as p,c as q,e as W}from"./chunk-3HM54J2N.js";import{a as _,b as H,c as M,d as J}from"./chunk-VURJZLM6.js";import"./chunk-TGQYM4TH.js";import{a as U}from"./chunk-CV3ROBUM.js";import"./chunk-ZN5Q3YET.js";import"./chunk-5BAD3NCT.js";import"./chunk-W6JITSZF.js";import{e as j,f as ao}from"./chunk-F2IS5LWD.js";import"./chunk-3DAK2XWP.js";import"./chunk-FCV2DPZQ.js";import{Command as bo}from"commander";import{fork as lo}from"child_process";import{readFileSync as E,writeFileSync as co,existsSync as w,unlinkSync as T,mkdirSync as mo,openSync as uo}from"fs";import{join as x}from"path";import{homedir as po}from"os";var D=x(po(),".adam"),v=x(D,"adam.pid"),S=x(D,"adam.port"),b=x(D,"server.log");function go(){w(D)||mo(D,{recursive:!0})}function C(){if(!w(v))return null;let o=parseInt(E(v,"utf-8").trim(),10);return isNaN(o)?null:o}function fo(){if(!w(S))return null;let o=parseInt(E(S,"utf-8").trim(),10);return isNaN(o)?null:o}function O(o){try{return process.kill(o,0),!0}catch{return!1}}async function L(){go();let o=C();if(o&&O(o))throw new Error(`Server already running (PID ${o})`);w(v)&&T(v),w(S)&&T(S);let e=uo(b,"a"),n=x(_,"dist/index.js"),t=lo(n,[],{detached:!0,stdio:["ignore",e,e,"ipc"]}),i=await new Promise((s,l)=>{let k=setTimeout(()=>{t.kill(),l(new Error(`Server start timeout. Check logs: ${b}`))},1e4);t.on("message",u=>{if(u&&typeof u=="object"&&u.type==="ready"){clearTimeout(k);let a=u.port;a?s(a):l(new Error("Ready signal received but missing port"))}}),t.on("exit",u=>{clearTimeout(k);let a=w(b)?E(b,"utf-8").split(`
2
+ import{a as q,b as h,c as G,e as W}from"./chunk-NSJAV7IH.js";import{a as K,c as B,f as J}from"./chunk-EALDBELJ.js";import{c as R,e as z}from"./chunk-JXD6ZPV7.js";import"./chunk-VF6GJGD6.js";import{d as _}from"./chunk-FYDFMYUP.js";import{b as H,c as j,d as ce}from"./chunk-PCSZW2PE.js";import"./chunk-SFUS33SO.js";import"./chunk-3DAK2XWP.js";import"./chunk-FCV2DPZQ.js";import{Command as we}from"commander";import{fork as de}from"child_process";import{readFileSync as M,writeFileSync as ue,existsSync as v,unlinkSync as $,mkdirSync as me,openSync as ge}from"fs";import{join as D}from"path";import{homedir as pe}from"os";var P=D(pe(),".adam"),S=D(P,"adam.pid"),k=D(P,"adam.port"),b=D(P,"server.log");function fe(){v(P)||me(P,{recursive:!0})}function C(){if(!v(S))return null;let e=parseInt(M(S,"utf-8").trim(),10);return isNaN(e)?null:e}function he(){if(!v(k))return null;let e=parseInt(M(k,"utf-8").trim(),10);return isNaN(e)?null:e}function A(e){try{return process.kill(e,0),!0}catch{return!1}}async function N(){fe();let e=C();if(e&&A(e))throw new Error(`Server already running (PID ${e})`);v(S)&&$(S),v(k)&&$(k);let o=ge(b,"a"),t=D(K,"dist/index.js"),n=de(t,[],{detached:!0,stdio:["ignore",o,o,"ipc"]}),l=await new Promise((i,c)=>{let p=setTimeout(()=>{n.kill(),c(new Error(`Server start timeout. Check logs: ${b}`))},1e4);n.on("message",a=>{if(a&&typeof a=="object"&&a.type==="ready"){clearTimeout(p);let s=a.port;s?i(s):c(new Error("Ready signal received but missing port"))}}),n.on("exit",a=>{clearTimeout(p);let s=v(b)?M(b,"utf-8").split(`
3
3
  `).slice(-10).join(`
4
- `):"";l(new Error(`Server exited with code ${u}.
5
- ${a?`Last log lines:
6
- ${a}`:`Check logs: ${b}`}`))}),t.on("error",u=>{clearTimeout(k),l(u)})});return co(v,String(t.pid)),t.disconnect(),t.unref(),{pid:t.pid,port:i}}async function N(){let o=C();if(!o)throw new Error("No PID file found \u2014 server not running?");if(!O(o))throw w(v)&&T(v),w(S)&&T(S),new Error("Server not running (stale PID file)");process.kill(o,"SIGTERM"),await new Promise(e=>{let n=0,t=setInterval(()=>{O(o)?(n++,n>=10&&(clearInterval(t),process.kill(o,"SIGKILL"),e())):(clearInterval(t),e())},500)}),w(v)&&T(v),w(S)&&T(S)}function I(){let o=C(),e=o?O(o):!1,n=fo();return{running:e,pid:o,port:n}}function z(){return b}import{readFileSync as To,existsSync as Io,createReadStream as Po}from"fs";import Do from"react";import{render as xo}from"ink";import c from"chalk";import*as K from"readline";async function B(o,e){try{let n={};e.model&&(n.model=e.model),e.timeout&&(n.timeout=e.timeout),e.budget&&(n.maxBudgetUsd=e.budget),e.workspace&&(n.workspacePath=e.workspace);let{taskId:t}=await p("/tasks",{method:"POST",body:{prompt:o,config:Object.keys(n).length>0?n:void 0}});e.json?console.log(JSON.stringify({taskId:t,status:"submitted"})):console.log(c.dim(`Task ${t} submitted`));let i=()=>{p(`/tasks/${t}/cancel`,{method:"POST"}).catch(()=>{}),e.json||console.log(c.yellow(`
7
- Task cancelled.`)),process.exit(130)};process.on("SIGINT",i);let s=new W(t);await s.connect();let l=[];await new Promise(u=>{s.on("reasoning",a=>{let r=a;e.json?l.push({type:"reasoning",...r}):process.stdout.write(c.gray(r.content??""))}),s.on("tool_call",a=>{let r=a;e.json?l.push({type:"tool_call",...r}):console.log(c.blue(`
8
- [tool] ${r.toolName??"unknown"}`))}),s.on("tool_result",a=>{let r=a;if(e.json)l.push({type:"tool_result",...r});else{let g=r.content??"",f=g.split(`
9
- `);f.length>5?console.log(c.green(`[result] (${f.length} lines) \u25B8 truncated`)):console.log(c.green(`[result] ${g}`))}}),s.on("error",a=>{let r=a;e.json?l.push({type:"error",...r}):console.error(c.red(`
10
- [error] ${r.error??"unknown error"}`))}),s.on("approval_needed",a=>{let r=a;if(e.approval===!1){p(`/tasks/${t}/approve`,{method:"POST",body:{approvalId:r.approvalId,reason:"auto-approved via --no-approval"}}).catch(()=>{});return}if(e.json){l.push({type:"approval_needed",...r}),p(`/tasks/${t}/approve`,{method:"POST",body:{approvalId:r.approvalId}}).catch(()=>{});return}console.log(c.yellow(`
11
- \u26A0 Approval needed: ${r.toolName}`)),console.log(c.yellow(` Pattern: ${r.matchedPattern}`)),console.log(c.yellow(` Input: ${JSON.stringify(r.toolInput)}`));let g=K.createInterface({input:process.stdin,output:process.stdout});g.question(c.yellow(" [a]pprove / [r]eject: "),f=>{g.close();let A=f.toLowerCase().startsWith("a")?"approve":"reject";p(`/tasks/${t}/${A}`,{method:"POST",body:{approvalId:r.approvalId}}).catch(()=>{})})}),s.on("complete",a=>{let r=a;e.json?console.log(JSON.stringify({taskId:t,status:"completed",events:l,result:r})):(console.log(c.dim(`
12
- \u2500\u2500\u2500 Task complete \u2500\u2500\u2500`)),r.costUsd!==void 0&&console.log(c.dim(`Cost: $${r.costUsd.toFixed(4)}`)),r.numTurns!==void 0&&console.log(c.dim(`Turns: ${r.numTurns}`))),s.close(),u()}),s.on("*",a=>{a.type})});let k=await p(`/tasks/${t}`);(k.task.status==="failed"||k.task.status==="cancelled")&&process.exit(1),process.exit(0)}catch(n){e.json?console.log(JSON.stringify({error:n.message})):console.error(c.red(n.message)),process.exit(1)}}import m from"chalk";var wo={pending:m.gray,queued:m.gray,running:m.yellow,paused:m.yellow,completed:m.green,failed:m.red,cancelled:m.gray};function Z(o){return(wo[o]??m.white)(o)}function V(o,e){return o.length<=e?o:o.slice(0,e-3)+"..."}function Q(o){if(o<1e3)return`${o}ms`;let e=Math.floor(o/1e3);if(e<60)return`${e}s`;let n=Math.floor(e/60),t=e%60;return`${n}m ${t}s`}async function X(o){try{let e=new URLSearchParams;o.status&&e.set("status",o.status),o.limit&&e.set("limit",o.limit);let n=e.toString(),{tasks:t}=await p(`/tasks${n?`?${n}`:""}`);if(t.length===0){console.log(m.dim("No tasks found"));return}console.log(m.bold($("ID",10)+$("STATUS",12)+$("PROMPT",40)+$("DURATION",10)+"COST"));for(let i of t){let s=i.totalDurationMs?Q(i.totalDurationMs):"\u2014",l=i.costUsd!==void 0?`$${i.costUsd.toFixed(4)}`:"\u2014";console.log($(i.id.slice(0,8),10)+$(Z(i.status),22)+$(V(i.prompt,38),40)+$(s,10)+l)}}catch(e){console.error(m.red(e.message)),process.exit(1)}}async function Y(o){try{let{task:e}=await p(`/tasks/${o}`);console.log(m.bold("Task Details")),console.log(` ID: ${e.id}`),console.log(` Status: ${Z(e.status)}`),console.log(` Prompt: ${e.prompt}`),console.log(` Created: ${new Date(e.createdAt).toLocaleString()}`),e.startedAt&&console.log(` Started: ${new Date(e.startedAt).toLocaleString()}`),e.completedAt&&console.log(` Finished: ${new Date(e.completedAt).toLocaleString()}`),e.totalDurationMs&&console.log(` Duration: ${Q(e.totalDurationMs)}`),e.costUsd!==void 0&&console.log(` Cost: $${e.costUsd.toFixed(4)}`),e.result&&console.log(` Result: ${V(e.result,200)}`),e.error&&console.log(` Error: ${m.red(e.error)}`)}catch(e){console.error(m.red(e.message)),process.exit(1)}}async function oo(o){try{await p(`/tasks/${o}/cancel`,{method:"POST"}),console.log(`Task ${o} cancelled`)}catch(e){console.error(m.red(e.message)),process.exit(1)}}function $(o,e){return o.length>=e?o:o+" ".repeat(e-o.length)}ao();import P from"chalk";import{readFileSync as yo,existsSync as ko}from"fs";import{parse as vo}from"yaml";async function eo(o){try{M(),J();let e=j;ko(e)||(console.error(P.red(`Config file not found: ${e}`)),process.exit(1));let n=yo(e,"utf-8"),t=vo(n);o.json?console.log(JSON.stringify(t,null,2)):(console.log(P.bold(`Adam Configuration
13
- `)),to(t,0))}catch(e){console.error(P.red(e.message)),process.exit(1)}}function to(o,e){let n=" ".repeat(e);for(let[t,i]of Object.entries(o))if(i&&typeof i=="object"&&!Array.isArray(i))console.log(`${n}${P.cyan(t)}:`),to(i,e+1);else if(Array.isArray(i)){console.log(`${n}${P.cyan(t)}:`);for(let s of i)console.log(`${n} - ${String(s)}`)}else{let s=t.toLowerCase().includes("key")||t.toLowerCase().includes("token")?ho(String(i)):String(i);console.log(`${n}${P.cyan(t)}: ${s}`)}}function ho(o){return!o||o.length<8?"****":o.slice(0,4)+"****"}import h from"chalk";async function ro(o){try{let e=o.limit??"20",n=await p(`/evolution-audit?limit=${e}`);if(n.length===0){console.log(h.dim("No evolution records yet"));return}console.log(h.bold(`Evolution Audit Log (${n.length} records)
14
- `));for(let t of n){let i=new Date(t.timestamp).toLocaleString();console.log(h.bold(`[${i}]`)+(t.triggerTaskId?h.dim(` task: ${t.triggerTaskId.slice(0,8)}`):"")),console.log(h.dim(" Diff:"));for(let s of t.diff.split(`
15
- `))s.startsWith("+")?console.log(h.green(` ${s}`)):s.startsWith("-")?console.log(h.red(` ${s}`)):console.log(h.dim(` ${s}`));console.log()}}catch(e){console.error(h.red(e.message)),process.exit(1)}}import d from"chalk";import{WebSocket as $o}from"ws";function So(){try{let o=U().server?.timezone;return o==="system"||!o?void 0:o}catch{return}}function no(o){let e=So();return new Date(o).toLocaleTimeString(void 0,e?{timeZone:e}:void 0)}async function so(o){let e=I(),n=o.port?Number(o.port):e.port??7100,t=G(),i=new URL(`ws://localhost:${n}/events`);t&&i.searchParams.set("api_key",t);let s=i.toString(),l=o.component,k=o.level;function u(){let r=new $o(s);r.on("open",()=>{console.log(d.dim(`Connected to ${s}`)),o.follow&&console.log(d.dim("Following logs... (Ctrl+C to exit)"))}),r.on("message",g=>{try{let f=JSON.parse(g.toString());if(f.type==="log_event"&&f.msg){if(l&&f.component!==l||k&&f.level!==k)return;a(f)}}catch{}}),r.on("error",g=>{console.error(d.red(`WebSocket error: ${g.message}`))}),r.on("close",()=>{o.follow&&(console.log(d.yellow("Connection closed, reconnecting...")),setTimeout(u,1e3))})}function a(r){let g=no(r.timestamp),A={debug:d.gray,info:d.blue,warn:d.yellow,error:d.red,fatal:d.bgRed.white}[r.level]||d.white,io=d.cyan(`[${r.component}]`);console.log(`${d.dim(g)} ${A(r.level.toUpperCase().padEnd(5))} ${io} ${r.msg}`),r.metadata&&typeof r.metadata=="object"&&Object.keys(r.metadata).length>0&&console.log(d.dim(" ")+d.dim(JSON.stringify(r.metadata)))}u(),await new Promise(r=>{process.on("SIGINT",()=>r()),process.on("SIGTERM",()=>r()),o.follow||setTimeout(r,3e3)})}var y=new bo;y.name("adam").description("Adam Agent Server CLI").version("0.2.0");var R=y.command("server").description("Server management");R.command("start").description("Start the server daemon").action(async()=>{try{let{pid:o,port:e}=await L();console.log(`Server started (PID ${o}, port ${e})`)}catch(o){console.error("Failed to start server:",o.message),process.exit(1)}});R.command("stop").description("Stop the server daemon").action(async()=>{try{await N(),console.log("Server stopped")}catch(o){console.error("Failed to stop server:",o.message),process.exit(1)}});R.command("restart").description("Restart the server daemon").action(async()=>{try{I().running&&(await N(),console.log("Server stopped"));let{pid:e,port:n}=await L();console.log(`Server restarted (PID ${e}, port ${n})`)}catch(o){console.error("Failed to restart server:",o.message),process.exit(1)}});R.command("status").description("Show server status").action(()=>{let o=I();o.running?console.log(`Server is running (PID ${o.pid}, port ${o.port})`):o.pid?console.log("Server not running (stale PID file)"):console.log("Server not running")});R.command("logs").description("Show server logs").option("-f, --follow","Follow log output").action(async o=>{let e=z();if(!Io(e)){console.log("No log file found");return}if(o.follow){let n=Po(e,{encoding:"utf-8"});for await(let t of n)process.stdout.write(t)}else console.log(To(e,"utf-8"))});y.command("run <prompt>").description("Submit a task and stream output").option("--model <model>","Model to use").option("--timeout <seconds>","Task timeout",parseInt).option("--budget <usd>","Max budget in USD",parseFloat).option("--template <name>","Task template to use").option("--workspace <path>","Workspace directory").option("--no-approval","Auto-approve all approval requests").option("--json","Output as JSON").option("--server <url>","Server URL").action(B);var F=y.command("tasks").description("Task management");F.command("list").description("List recent tasks").option("-s, --status <status>","Filter by status").option("-l, --limit <number>","Limit results","20").action(X);F.command("show <id>").description("Show task details").action(Y);F.command("cancel <id>").description("Cancel a running task").action(oo);y.command("config").description("Display current configuration").option("--json","Output as JSON").action(eo);y.command("evolution").description("Show self-evolution audit log").option("-l, --limit <number>","Limit results","20").action(ro);y.command("logs").description("Stream server logs in real-time via WebSocket").option("-f, --follow","Follow logs continuously").option("-c, --component <component>","Filter by component (manager, worker, scheduler, api, ws)").option("-l, --level <level>","Filter by level (debug, info, warn, error)").option("-p, --port <port>","Server port").action(so);y.command("register-ai-digest").description("Register the AI Hourly Digest task template (cron: every hour)").action(()=>{try{H(),console.log("AI Digest template registered successfully")}catch(o){console.error("Failed to register AI Digest template:",o.message),process.exit(1)}});y.action(async()=>{try{await q()}catch{I().running?console.error("Server is running but not responding. Check: adam server logs"):console.error("Server not running. Run: adam server start"),process.exit(1)}let o=(await import("./App-23CRAK2P.js")).default,{waitUntilExit:e}=xo(Do.createElement(o));await e()});y.parse();
4
+ `):"";c(new Error(`Server exited with code ${a}.
5
+ ${s?`Last log lines:
6
+ ${s}`:`Check logs: ${b}`}`))}),n.on("error",a=>{clearTimeout(p),c(a)})});return ue(S,String(n.pid)),n.disconnect(),n.unref(),{pid:n.pid,port:l}}async function U(){let e=C();if(!e)throw new Error("No PID file found \u2014 server not running?");if(!A(e))throw v(S)&&$(S),v(k)&&$(k),new Error("Server not running (stale PID file)");process.kill(e,"SIGTERM"),await new Promise(o=>{let t=0,n=setInterval(()=>{A(e)?(t++,t>=10&&(clearInterval(n),process.kill(e,"SIGKILL"),o())):(clearInterval(n),o())},500)}),v(S)&&$(S),v(k)&&$(k)}function I(){let e=C(),o=e?A(e):!1,t=he();return{running:o,pid:e,port:t}}function V(){return b}import{readFileSync as ke,existsSync as Te,createReadStream as be}from"fs";import $e from"react";import{render as Ie}from"ink";import d from"chalk";import*as Y from"readline";async function Z(e,o){try{let t={};o.model&&(t.model=o.model),o.timeout&&(t.timeout=o.timeout),o.budget&&(t.maxBudgetUsd=o.budget),o.workspace&&(t.workspacePath=o.workspace);let{taskId:n}=await h("/tasks",{method:"POST",body:{prompt:e,config:Object.keys(t).length>0?t:void 0}});o.json?console.log(JSON.stringify({taskId:n,status:"submitted"})):console.log(d.dim(`Task ${n} submitted`));let l=()=>{h(`/tasks/${n}/cancel`,{method:"POST"}).catch(()=>{}),o.json||console.log(d.yellow(`
7
+ Task cancelled.`)),process.exit(130)};process.on("SIGINT",l);let i=new W(n);await i.connect();let c=[];await new Promise(a=>{i.on("reasoning",s=>{let r=s;o.json?c.push({type:"reasoning",...r}):process.stdout.write(d.gray(r.content??""))}),i.on("tool_call",s=>{let r=s;o.json?c.push({type:"tool_call",...r}):console.log(d.blue(`
8
+ [tool] ${r.toolName??"unknown"}`))}),i.on("tool_result",s=>{let r=s;if(o.json)c.push({type:"tool_result",...r});else{let m=r.content??"",f=m.split(`
9
+ `);f.length>5?console.log(d.green(`[result] (${f.length} lines) \u25B8 truncated`)):console.log(d.green(`[result] ${m}`))}}),i.on("error",s=>{let r=s;o.json?c.push({type:"error",...r}):console.error(d.red(`
10
+ [error] ${r.error??"unknown error"}`))}),i.on("approval_needed",s=>{let r=s;if(o.approval===!1){h(`/tasks/${n}/approve`,{method:"POST",body:{approvalId:r.approvalId,reason:"auto-approved via --no-approval"}}).catch(()=>{});return}if(o.json){c.push({type:"approval_needed",...r}),h(`/tasks/${n}/approve`,{method:"POST",body:{approvalId:r.approvalId}}).catch(()=>{});return}console.log(d.yellow(`
11
+ \u26A0 Approval needed: ${r.toolName}`)),console.log(d.yellow(` Pattern: ${r.matchedPattern}`)),console.log(d.yellow(` Input: ${JSON.stringify(r.toolInput)}`));let m=Y.createInterface({input:process.stdin,output:process.stdout});m.question(d.yellow(" [a]pprove / [r]eject: "),f=>{m.close();let x=f.toLowerCase().startsWith("a")?"approve":"reject";h(`/tasks/${n}/${x}`,{method:"POST",body:{approvalId:r.approvalId}}).catch(()=>{})})}),i.on("complete",s=>{let r=s;o.json?console.log(JSON.stringify({taskId:n,status:"completed",events:c,result:r})):(console.log(d.dim(`
12
+ \u2500\u2500\u2500 Task complete \u2500\u2500\u2500`)),r.costUsd!==void 0&&console.log(d.dim(`Cost: $${r.costUsd.toFixed(4)}`)),r.numTurns!==void 0&&console.log(d.dim(`Turns: ${r.numTurns}`))),i.close(),a()}),i.on("*",s=>{s.type})});let p=await h(`/tasks/${n}`);(p.task.status==="failed"||p.task.status==="cancelled")&&process.exit(1),process.exit(0)}catch(t){o.json?console.log(JSON.stringify({error:t.message})):console.error(d.red(t.message)),process.exit(1)}}import u from"chalk";var ve={pending:u.gray,queued:u.gray,running:u.yellow,paused:u.yellow,completed:u.green,failed:u.red,cancelled:u.gray};function Q(e){return(ve[e]??u.white)(e)}function X(e,o){return e.length<=o?e:e.slice(0,o-3)+"..."}function ee(e){if(e<1e3)return`${e}ms`;let o=Math.floor(e/1e3);if(o<60)return`${o}s`;let t=Math.floor(o/60),n=o%60;return`${t}m ${n}s`}async function oe(e){try{let o=new URLSearchParams;e.status&&o.set("status",e.status),e.limit&&o.set("limit",e.limit);let t=o.toString(),{tasks:n}=await h(`/tasks${t?`?${t}`:""}`);if(n.length===0){console.log(u.dim("No tasks found"));return}console.log(u.bold(T("ID",10)+T("STATUS",12)+T("PROMPT",40)+T("DURATION",10)+"COST"));for(let l of n){let i=l.totalDurationMs?ee(l.totalDurationMs):"\u2014",c=l.costUsd!==void 0?`$${l.costUsd.toFixed(4)}`:"\u2014";console.log(T(l.id.slice(0,8),10)+T(Q(l.status),22)+T(X(l.prompt,38),40)+T(i,10)+c)}}catch(o){console.error(u.red(o.message)),process.exit(1)}}async function te(e){try{let{task:o}=await h(`/tasks/${e}`);console.log(u.bold("Task Details")),console.log(` ID: ${o.id}`),console.log(` Status: ${Q(o.status)}`),console.log(` Prompt: ${o.prompt}`),console.log(` Created: ${new Date(o.createdAt).toLocaleString()}`),o.startedAt&&console.log(` Started: ${new Date(o.startedAt).toLocaleString()}`),o.completedAt&&console.log(` Finished: ${new Date(o.completedAt).toLocaleString()}`),o.totalDurationMs&&console.log(` Duration: ${ee(o.totalDurationMs)}`),o.costUsd!==void 0&&console.log(` Cost: $${o.costUsd.toFixed(4)}`),o.result&&console.log(` Result: ${X(o.result,200)}`),o.error&&console.log(` Error: ${u.red(o.error)}`)}catch(o){console.error(u.red(o.message)),process.exit(1)}}async function re(e){try{await h(`/tasks/${e}/cancel`,{method:"POST"}),console.log(`Task ${e} cancelled`)}catch(o){console.error(u.red(o.message)),process.exit(1)}}function T(e,o){return e.length>=o?e:e+" ".repeat(o-e.length)}ce();import O from"chalk";async function se(e){try{let o=H();if(e.json){let t=R();console.log(JSON.stringify(t,null,2))}else{let t=R(),n=B(),l=z();console.log(O.bold(`Adam Configuration
13
+ `)),l&&console.log(O.yellow(`No configuration saved. Use Settings UI or create ~/.adam/.env
14
+ `));let i={Anthropic:[["anthropic.apiKey",t["anthropic.apiKey"]],["anthropic.baseUrl",t["anthropic.baseUrl"]],["anthropic.model",t["anthropic.model"]],["anthropic.defaultOpusModel",t["anthropic.defaultOpusModel"]],["anthropic.defaultSonnetModel",t["anthropic.defaultSonnetModel"]],["anthropic.defaultHaikuModel",t["anthropic.defaultHaikuModel"]],["anthropic.smallFastModel",t["anthropic.smallFastModel"]]],Defaults:[["defaults.model",t["defaults.model"]],["defaults.effort",t["defaults.effort"]],["defaults.maxTurns",t["defaults.maxTurns"]],["defaults.maxBudgetUsd",t["defaults.maxBudgetUsd"]],["defaults.timeout",t["defaults.timeout"]]],Server:[["server.port",t["server.port"]],["server.host",t["server.host"]],["server.apiKey",t["server.apiKey"]],["server.timezone",t["server.timezone"]]],Logging:[["logging.level",t["logging.level"]]],Evolution:[["roles.evolution.triggerEvery",t["roles.evolution.triggerEvery"]],["roles.evolution.reflectionThreshold",t["roles.evolution.reflectionThreshold"]]],Chat:[["chat.sessionTimeoutMinutes",t["chat.sessionTimeoutMinutes"]],["chat.maxSessionTurns",t["chat.maxSessionTurns"]],["chat.autoTitle",t["chat.autoTitle"]],["chat.archiveExtractMemory",t["chat.archiveExtractMemory"]]]},c={"anthropic.apiKey":"API Key","anthropic.baseUrl":"Base URL","anthropic.model":"Model","anthropic.defaultOpusModel":"Default Opus","anthropic.defaultSonnetModel":"Default Sonnet","anthropic.defaultHaikuModel":"Default Haiku","anthropic.smallFastModel":"Small Fast","defaults.model":"Default Model","defaults.effort":"Effort","defaults.maxTurns":"Max Turns","defaults.maxBudgetUsd":"Max Budget (USD)","defaults.timeout":"Timeout (sec)","server.port":"Port","server.host":"Host","server.apiKey":"API Key","server.timezone":"Timezone","logging.level":"Log Level","roles.evolution.triggerEvery":"Evolution Trigger Every","chat.sessionTimeoutMinutes":"Session Timeout (min)","chat.maxSessionTurns":"Max Session Turns","chat.autoTitle":"Auto Title","chat.archiveExtractMemory":"Archive Extract Memory","roles.evolution.reflectionThreshold":"Reflection Threshold"};for(let[p,a]of Object.entries(i)){let s=a.filter(([,r])=>r!=null&&r!=="");if(s.length!==0){console.log(O.cyan(`${p}:`));for(let[r,m]of s){let f=c[r]??r,L=r.includes("apiKey")||r.includes("token")||r.includes("secret")?ne(String(m)):String(m);console.log(` ${f}: ${L}`)}console.log("")}}if(n){console.log(O.bold(`.env File Values:
15
+ `));let p=["ANTHROPIC_API_KEY","ANTHROPIC_BASE_URL","ANTHROPIC_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_SMALL_FAST_MODEL"];for(let a of p)if(a in n){let s=a.includes("API_KEY");console.log(` ${a}: ${s?ne(n[a]):n[a]}`)}console.log("")}}}finally{j()}}function ne(e){return!e||e.length<8?"****":e.slice(0,4)+"****"}import w from"chalk";async function ie(e){try{let o=e.limit??"20",t=await h(`/evolution-audit?limit=${o}`);if(t.length===0){console.log(w.dim("No evolution records yet"));return}console.log(w.bold(`Evolution Audit Log (${t.length} records)
16
+ `));for(let n of t){let l=new Date(n.timestamp).toLocaleString();console.log(w.bold(`[${l}]`)+(n.triggerTaskId?w.dim(` task: ${n.triggerTaskId.slice(0,8)}`):"")),console.log(w.dim(" Diff:"));for(let i of n.diff.split(`
17
+ `))i.startsWith("+")?console.log(w.green(` ${i}`)):i.startsWith("-")?console.log(w.red(` ${i}`)):console.log(w.dim(` ${i}`));console.log()}}catch(o){console.error(w.red(o.message)),process.exit(1)}}import g from"chalk";import{WebSocket as Se}from"ws";function ye(){try{let e=_().server?.timezone;return e==="system"||!e?void 0:e}catch{return}}function ae(e){let o=ye();return new Date(e).toLocaleTimeString(void 0,o?{timeZone:o}:void 0)}async function le(e){let o=I(),t=e.port?Number(e.port):o.port??7100,n=q(),l=new URL(`ws://localhost:${t}/events`);n&&l.searchParams.set("api_key",n);let i=l.toString(),c=e.component,p=e.level;function a(){let r=new Se(i);r.on("open",()=>{console.log(g.dim(`Connected to ${i}`)),e.follow&&console.log(g.dim("Following logs... (Ctrl+C to exit)"))}),r.on("message",m=>{try{let f=JSON.parse(m.toString());if(f.type==="log_event"&&f.msg){if(c&&f.component!==c||p&&f.level!==p)return;s(f)}}catch{}}),r.on("error",m=>{console.error(g.red(`WebSocket error: ${m.message}`))}),r.on("close",()=>{e.follow&&(console.log(g.yellow("Connection closed, reconnecting...")),setTimeout(a,1e3))})}function s(r){let m=ae(r.timestamp),x={debug:g.gray,info:g.blue,warn:g.yellow,error:g.red,fatal:g.bgRed.white}[r.level]||g.white,L=g.cyan(`[${r.component}]`);console.log(`${g.dim(m)} ${x(r.level.toUpperCase().padEnd(5))} ${L} ${r.msg}`),r.metadata&&typeof r.metadata=="object"&&Object.keys(r.metadata).length>0&&console.log(g.dim(" ")+g.dim(JSON.stringify(r.metadata)))}a(),await new Promise(r=>{process.on("SIGINT",()=>r()),process.on("SIGTERM",()=>r()),e.follow||setTimeout(r,3e3)})}var y=new we;y.name("adam").description("Adam Agent Server CLI").version("0.2.0");var E=y.command("server").description("Server management");E.command("start").description("Start the server daemon").action(async()=>{try{let{pid:e,port:o}=await N();console.log(`Server started (PID ${e}, port ${o})`)}catch(e){console.error("Failed to start server:",e.message),process.exit(1)}});E.command("stop").description("Stop the server daemon").action(async()=>{try{await U(),console.log("Server stopped")}catch(e){console.error("Failed to stop server:",e.message),process.exit(1)}});E.command("restart").description("Restart the server daemon").action(async()=>{try{I().running&&(await U(),console.log("Server stopped"));let{pid:o,port:t}=await N();console.log(`Server restarted (PID ${o}, port ${t})`)}catch(e){console.error("Failed to restart server:",e.message),process.exit(1)}});E.command("status").description("Show server status").action(()=>{let e=I();e.running?console.log(`Server is running (PID ${e.pid}, port ${e.port})`):e.pid?console.log("Server not running (stale PID file)"):console.log("Server not running")});E.command("logs").description("Show server logs").option("-f, --follow","Follow log output").action(async e=>{let o=V();if(!Te(o)){console.log("No log file found");return}if(e.follow){let t=be(o,{encoding:"utf-8"});for await(let n of t)process.stdout.write(n)}else console.log(ke(o,"utf-8"))});y.command("run <prompt>").description("Submit a task and stream output").option("--model <model>","Model to use").option("--timeout <seconds>","Task timeout",parseInt).option("--budget <usd>","Max budget in USD",parseFloat).option("--template <name>","Task template to use").option("--workspace <path>","Workspace directory").option("--no-approval","Auto-approve all approval requests").option("--json","Output as JSON").option("--server <url>","Server URL").action(Z);var F=y.command("tasks").description("Task management");F.command("list").description("List recent tasks").option("-s, --status <status>","Filter by status").option("-l, --limit <number>","Limit results","20").action(oe);F.command("show <id>").description("Show task details").action(te);F.command("cancel <id>").description("Cancel a running task").action(re);y.command("config").description("Display current configuration").option("--json","Output as JSON").action(se);y.command("evolution").description("Show self-evolution audit log").option("-l, --limit <number>","Limit results","20").action(ie);y.command("logs").description("Stream server logs in real-time via WebSocket").option("-f, --follow","Follow logs continuously").option("-c, --component <component>","Filter by component (manager, worker, scheduler, api, ws)").option("-l, --level <level>","Filter by level (debug, info, warn, error)").option("-p, --port <port>","Server port").action(le);y.command("register-ai-digest").description("Register the AI Hourly Digest task template (cron: every hour)").action(()=>{try{J(),console.log("AI Digest template registered successfully")}catch(e){console.error("Failed to register AI Digest template:",e.message),process.exit(1)}});y.action(async()=>{try{await G()}catch{I().running?console.error("Server is running but not responding. Check: adam server logs"):console.error("Server not running. Run: adam server start"),process.exit(1)}let e=(await import("./App-G2WZKRUH.js")).default,{waitUntilExit:o}=Ie($e.createElement(e));await o()});y.parse();
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f}from"./chunk-JXD6ZPV7.js";import"./chunk-PCSZW2PE.js";import"./chunk-SFUS33SO.js";import"./chunk-FCV2DPZQ.js";export{f as deleteConfigValue,c as getAllConfig,a as getConfigValue,e as isConfigEmpty,d as seedConfig,b as setConfigValue};
@@ -0,0 +1 @@
1
+ import{a as b,b as c,d,e}from"./chunk-T25NLVMY.js";import{a}from"./chunk-ETQ7KC73.js";import"./chunk-FYDFMYUP.js";import"./chunk-SFUS33SO.js";import"./chunk-FCV2DPZQ.js";export{a as DEFAULT_CONFIG,e as getChatConfig,d as getDefaults,b as loadConfig,c as loadDefaultConfig};
@@ -1 +1 @@
1
- import{a,b,c,d}from"./chunk-W6JITSZF.js";import"./chunk-F2IS5LWD.js";import"./chunk-FCV2DPZQ.js";d();export{c as closeDb,b as getDb,a as runMigrations};
1
+ import{a,b,c,d}from"./chunk-PCSZW2PE.js";import"./chunk-SFUS33SO.js";import"./chunk-FCV2DPZQ.js";d();export{c as closeDb,b as getDb,a as runMigrations};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-FDWW245P.js";import"./chunk-PCSZW2PE.js";import"./chunk-SFUS33SO.js";import"./chunk-FCV2DPZQ.js";export{a as TTL_MS,g as cleanupExpired,b as createDeliveryLog,i as getDeliveryLogByRule,h as getDeliveryLogByTask,f as getFailedDeliveries,e as getPendingDeliveries,d as markDelivered,c as updateDeliveryLogStatus};
@@ -0,0 +1 @@
1
+ import{a,b,c,d}from"./chunk-NICRQZ7T.js";import"./chunk-UOTDT2KY.js";import"./chunk-KICPHTI2.js";import"./chunk-5ASEAZCR.js";import"./chunk-742NWPTQ.js";import"./chunk-PQ7KPALO.js";import"./chunk-FDWW245P.js";import"./chunk-L7426WNY.js";import"./chunk-L7JP7DUO.js";import"./chunk-PCSZW2PE.js";import"./chunk-SFUS33SO.js";import"./chunk-3DAK2XWP.js";import"./chunk-FCV2DPZQ.js";export{a as DeliveryEngine,b as getDeliveryEngine,c as initDeliveryEngine,d as stopDeliveryEngine};
@@ -1 +1 @@
1
- import{a,b,c,d,e}from"./chunk-5AKFAMQL.js";import"./chunk-W6JITSZF.js";import"./chunk-F2IS5LWD.js";import"./chunk-FCV2DPZQ.js";export{a as createEvolutionAudit,e as generateDiff,d as getLatestRoleEvolution,b as listEvolutionAudit,c as listEvolutionAuditByRole};
1
+ import{a,b,c,d,e}from"./chunk-B6S2AEOD.js";import"./chunk-PCSZW2PE.js";import"./chunk-SFUS33SO.js";import"./chunk-FCV2DPZQ.js";export{a as createEvolutionAudit,e as generateDiff,d as getLatestRoleEvolution,b as listEvolutionAudit,c as listEvolutionAuditByRole};
@@ -1 +1 @@
1
- import{a as i}from"./chunk-ZN5Q3YET.js";import"./chunk-F2IS5LWD.js";import{c as a}from"./chunk-3DAK2XWP.js";import"./chunk-FCV2DPZQ.js";var c=a("agent");async function g(n){let e=p();if(e.length===0)return{scores:[],errors:[]};let s=[],r=[];for(let t of e)try{let o=await u(t);o!==null&&s.push({nodeId:n,score:o,source:t.name,fetchedAt:Date.now()})}catch(o){r.push(`External API "${t.name}" (${t.url}): ${o instanceof Error?o.message:String(o)}`),c.warn({endpoint:t.name,error:o},"External API fetch failed")}return{scores:s,errors:r}}async function u(n){let e=await fetch(n.url,{signal:AbortSignal.timeout(5e3),headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`HTTP ${e.status} ${e.statusText}`);let s=await e.json(),r=l(s,n.scorePath);if(typeof r!="number"||isNaN(r))throw new Error(`Score at "${n.scorePath}" is not a number: ${JSON.stringify(r)}`);return Math.max(0,Math.min(1,r))}function l(n,e){let s=e.replace(/^\$\.?/,""),r=n;for(let t of s.split(".")){if(r==null||typeof r!="object")return;r=r[t]}return r}function p(){return i.externalApis??[]}export{g as collectExternalApiScores};
1
+ import{a as i}from"./chunk-ETQ7KC73.js";import"./chunk-SFUS33SO.js";import{c as a}from"./chunk-3DAK2XWP.js";import"./chunk-FCV2DPZQ.js";var c=a("agent");async function g(n){let e=p();if(e.length===0)return{scores:[],errors:[]};let s=[],r=[];for(let t of e)try{let o=await u(t);o!==null&&s.push({nodeId:n,score:o,source:t.name,fetchedAt:Date.now()})}catch(o){r.push(`External API "${t.name}" (${t.url}): ${o instanceof Error?o.message:String(o)}`),c.warn({endpoint:t.name,error:o},"External API fetch failed")}return{scores:s,errors:r}}async function u(n){let e=await fetch(n.url,{signal:AbortSignal.timeout(5e3),headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`HTTP ${e.status} ${e.statusText}`);let s=await e.json(),r=l(s,n.scorePath);if(typeof r!="number"||isNaN(r))throw new Error(`Score at "${n.scorePath}" is not a number: ${JSON.stringify(r)}`);return Math.max(0,Math.min(1,r))}function l(n,e){let s=e.replace(/^\$\.?/,""),r=n;for(let t of s.split(".")){if(r==null||typeof r!="object")return;r=r[t]}return r}function p(){return i.externalApis??[]}export{g as collectExternalApiScores};