twinclaw 1.1.0 → 1.1.2

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 (498) hide show
  1. package/README.md +3 -3
  2. package/dist/api/handlers/agents.js +82 -0
  3. package/dist/api/handlers/browser.js +85 -2
  4. package/dist/api/handlers/callback.js +51 -3
  5. package/dist/api/handlers/debug.js +69 -0
  6. package/dist/api/handlers/devices.js +79 -0
  7. package/dist/api/handlers/jobs.js +99 -0
  8. package/{src/api/handlers/health.ts → dist/api/handlers/status.js} +149 -144
  9. package/dist/api/router.js +287 -11
  10. package/dist/api/runtime-event-producer.js +20 -0
  11. package/dist/api/shared.js +98 -10
  12. package/dist/api/websocket-hub.js +18 -7
  13. package/dist/config/json-config.js +393 -1
  14. package/dist/core/channels-cli.js +8 -4
  15. package/dist/core/heartbeat.js +304 -8
  16. package/dist/core/lane-executor.js +18 -0
  17. package/dist/core/onboarding.js +2 -2
  18. package/dist/core/self-improve-cli.js +212 -0
  19. package/dist/core/simplified-onboarding.js +165 -19
  20. package/dist/index.js +62 -33
  21. package/dist/interfaces/dispatcher.js +4 -2
  22. package/dist/interfaces/whatsapp_handler.js +251 -6
  23. package/dist/services/auto-configurer.js +591 -0
  24. package/dist/services/device-pairing.js +378 -0
  25. package/dist/services/hooks.js +130 -0
  26. package/dist/services/job-scheduler.js +133 -1
  27. package/dist/services/learning-system.js +226 -0
  28. package/dist/services/secret-vault.js +101 -14
  29. package/dist/services/self-healing.js +267 -0
  30. package/dist/services/skill-acquisition/intent-parser.js +115 -0
  31. package/dist/services/skill-acquisition/research-engine.js +319 -0
  32. package/dist/services/skill-builder.js +235 -0
  33. package/dist/services/sub-agent-service.js +215 -0
  34. package/dist/services/web-service.js +70 -0
  35. package/dist/services/webhook-service.js +127 -0
  36. package/dist/skills/builtin.js +838 -10
  37. package/dist/skills/shell.js +145 -18
  38. package/dist/tools/agent-improvement.js +208 -0
  39. package/dist/types/skill-acquisition.js +4 -0
  40. package/package.json +14 -3
  41. package/.env.example +0 -71
  42. package/.githooks/pre-commit +0 -5
  43. package/.github/copilot-instructions.md +0 -170
  44. package/.github/skills/find-skills/SKILL.md +0 -133
  45. package/.github/skills/frontend-design/LICENSE.txt +0 -177
  46. package/.github/skills/frontend-design/SKILL.md +0 -94
  47. package/.github/skills/humanist-web-style/SKILL.md +0 -170
  48. package/.github/workflows/main.yml +0 -137
  49. package/.skills/frontend-design/frontend-design.md +0 -94
  50. package/.vscode/settings.json +0 -7
  51. package/Dockerfile +0 -19
  52. package/bootstrap.ps1 +0 -31
  53. package/conductor/AGENT_GUIDE.md +0 -27
  54. package/conductor/CONSISTENCY_CHECK.md +0 -143
  55. package/conductor/archive/api_health_hard_gate_20260221/index.md +0 -7
  56. package/conductor/archive/api_health_hard_gate_20260221/metadata.json +0 -10
  57. package/conductor/archive/api_health_hard_gate_20260221/plan.md +0 -13
  58. package/conductor/archive/api_health_hard_gate_20260221/spec.md +0 -13
  59. package/conductor/archive/browser_ref_mapping_20260220/metadata.json +0 -8
  60. package/conductor/archive/browser_ref_mapping_20260220/plan.md +0 -28
  61. package/conductor/archive/browser_ref_mapping_20260220/spec.md +0 -23
  62. package/conductor/archive/browser_skills_20260220/index.md +0 -5
  63. package/conductor/archive/browser_skills_20260220/metadata.json +0 -8
  64. package/conductor/archive/browser_skills_20260220/plan.md +0 -25
  65. package/conductor/archive/browser_skills_20260220/spec.md +0 -15
  66. package/conductor/archive/build_contract_recovery_20260220/index.md +0 -5
  67. package/conductor/archive/build_contract_recovery_20260220/metadata.json +0 -8
  68. package/conductor/archive/build_contract_recovery_20260220/plan.md +0 -28
  69. package/conductor/archive/build_contract_recovery_20260220/spec.md +0 -16
  70. package/conductor/archive/channels_login_doctor_20260221/index.md +0 -5
  71. package/conductor/archive/channels_login_doctor_20260221/metadata.json +0 -8
  72. package/conductor/archive/channels_login_doctor_20260221/plan.md +0 -28
  73. package/conductor/archive/channels_login_doctor_20260221/spec.md +0 -17
  74. package/conductor/archive/ci_release_gate_enforcement_20260221/index.md +0 -7
  75. package/conductor/archive/ci_release_gate_enforcement_20260221/metadata.json +0 -10
  76. package/conductor/archive/ci_release_gate_enforcement_20260221/plan.md +0 -17
  77. package/conductor/archive/ci_release_gate_enforcement_20260221/spec.md +0 -13
  78. package/conductor/archive/cli_hardening_onboarding_20260220/metadata.json +0 -8
  79. package/conductor/archive/cli_hardening_onboarding_20260220/plan.md +0 -29
  80. package/conductor/archive/cli_hardening_onboarding_20260220/spec.md +0 -17
  81. package/conductor/archive/config_env_validation_20260220/index.md +0 -5
  82. package/conductor/archive/config_env_validation_20260220/metadata.json +0 -8
  83. package/conductor/archive/config_env_validation_20260220/plan.md +0 -28
  84. package/conductor/archive/config_env_validation_20260220/spec.md +0 -16
  85. package/conductor/archive/config_json_foundation_20260221/index.md +0 -5
  86. package/conductor/archive/config_json_foundation_20260221/metadata.json +0 -8
  87. package/conductor/archive/config_json_foundation_20260221/plan.md +0 -28
  88. package/conductor/archive/config_json_foundation_20260221/spec.md +0 -17
  89. package/conductor/archive/context_budgeting_memory_lifecycle_20260220/metadata.json +0 -8
  90. package/conductor/archive/context_budgeting_memory_lifecycle_20260220/plan.md +0 -28
  91. package/conductor/archive/context_budgeting_memory_lifecycle_20260220/spec.md +0 -17
  92. package/conductor/archive/control_plane_api_endpoints_20260220/metadata.json +0 -8
  93. package/conductor/archive/control_plane_api_endpoints_20260220/plan.md +0 -28
  94. package/conductor/archive/control_plane_api_endpoints_20260220/spec.md +0 -17
  95. package/conductor/archive/control_plane_observability_20260220/metadata.json +0 -8
  96. package/conductor/archive/control_plane_observability_20260220/plan.md +0 -28
  97. package/conductor/archive/control_plane_observability_20260220/spec.md +0 -17
  98. package/conductor/archive/control_plane_websocket_streaming_20260220/metadata.json +0 -8
  99. package/conductor/archive/control_plane_websocket_streaming_20260220/plan.md +0 -28
  100. package/conductor/archive/control_plane_websocket_streaming_20260220/spec.md +0 -18
  101. package/conductor/archive/core_persona_20260220/index.md +0 -5
  102. package/conductor/archive/core_persona_20260220/metadata.json +0 -8
  103. package/conductor/archive/core_persona_20260220/plan.md +0 -30
  104. package/conductor/archive/core_persona_20260220/spec.md +0 -15
  105. package/conductor/archive/coverage_gap_expansion_20260220/index.md +0 -5
  106. package/conductor/archive/coverage_gap_expansion_20260220/metadata.json +0 -8
  107. package/conductor/archive/coverage_gap_expansion_20260220/plan.md +0 -28
  108. package/conductor/archive/coverage_gap_expansion_20260220/spec.md +0 -16
  109. package/conductor/archive/cross_session_reasoning_graph_20260220/metadata.json +0 -8
  110. package/conductor/archive/cross_session_reasoning_graph_20260220/plan.md +0 -30
  111. package/conductor/archive/cross_session_reasoning_graph_20260220/spec.md +0 -17
  112. package/conductor/archive/delegation_dag_runtime_20260220/metadata.json +0 -8
  113. package/conductor/archive/delegation_dag_runtime_20260220/plan.md +0 -29
  114. package/conductor/archive/delegation_dag_runtime_20260220/spec.md +0 -17
  115. package/conductor/archive/delivery_queue_deadletter_20260220/metadata.json +0 -8
  116. package/conductor/archive/delivery_queue_deadletter_20260220/plan.md +0 -28
  117. package/conductor/archive/delivery_queue_deadletter_20260220/spec.md +0 -17
  118. package/conductor/archive/dm_pairing_policy_20260221/index.md +0 -5
  119. package/conductor/archive/dm_pairing_policy_20260221/metadata.json +0 -8
  120. package/conductor/archive/dm_pairing_policy_20260221/plan.md +0 -28
  121. package/conductor/archive/dm_pairing_policy_20260221/spec.md +0 -17
  122. package/conductor/archive/docs_agent_plan_migration_20260221/index.md +0 -5
  123. package/conductor/archive/docs_agent_plan_migration_20260221/metadata.json +0 -8
  124. package/conductor/archive/docs_agent_plan_migration_20260221/plan.md +0 -28
  125. package/conductor/archive/docs_agent_plan_migration_20260221/spec.md +0 -16
  126. package/conductor/archive/docs_prd_blueprint_migration_20260221/index.md +0 -5
  127. package/conductor/archive/docs_prd_blueprint_migration_20260221/metadata.json +0 -8
  128. package/conductor/archive/docs_prd_blueprint_migration_20260221/plan.md +0 -28
  129. package/conductor/archive/docs_prd_blueprint_migration_20260221/spec.md +0 -16
  130. package/conductor/archive/docs_track_state_reconciliation_20260221/index.md +0 -7
  131. package/conductor/archive/docs_track_state_reconciliation_20260221/metadata.json +0 -10
  132. package/conductor/archive/docs_track_state_reconciliation_20260221/plan.md +0 -19
  133. package/conductor/archive/docs_track_state_reconciliation_20260221/spec.md +0 -13
  134. package/conductor/archive/gateway_control_plane_20260220/metadata.json +0 -8
  135. package/conductor/archive/gateway_control_plane_20260220/plan.md +0 -20
  136. package/conductor/archive/gateway_control_plane_20260220/spec.md +0 -16
  137. package/conductor/archive/gateway_supervision_remote_access_20260221/index.md +0 -5
  138. package/conductor/archive/gateway_supervision_remote_access_20260221/metadata.json +0 -8
  139. package/conductor/archive/gateway_supervision_remote_access_20260221/plan.md +0 -25
  140. package/conductor/archive/gateway_supervision_remote_access_20260221/spec.md +0 -17
  141. package/conductor/archive/groq_tts_migration_20260220/index.md +0 -5
  142. package/conductor/archive/groq_tts_migration_20260220/metadata.json +0 -8
  143. package/conductor/archive/groq_tts_migration_20260220/plan.md +0 -28
  144. package/conductor/archive/groq_tts_migration_20260220/spec.md +0 -16
  145. package/conductor/archive/gui_runtime_dashboard_20260220/metadata.json +0 -8
  146. package/conductor/archive/gui_runtime_dashboard_20260220/plan.md +0 -28
  147. package/conductor/archive/gui_runtime_dashboard_20260220/spec.md +0 -17
  148. package/conductor/archive/identity_bootstrap_compliance_20260221/index.md +0 -7
  149. package/conductor/archive/identity_bootstrap_compliance_20260221/metadata.json +0 -10
  150. package/conductor/archive/identity_bootstrap_compliance_20260221/plan.md +0 -17
  151. package/conductor/archive/identity_bootstrap_compliance_20260221/spec.md +0 -13
  152. package/conductor/archive/incident_self_healing_20260220/metadata.json +0 -8
  153. package/conductor/archive/incident_self_healing_20260220/plan.md +0 -28
  154. package/conductor/archive/incident_self_healing_20260220/spec.md +0 -17
  155. package/conductor/archive/install_bootstrap_fastpath_20260220/index.md +0 -5
  156. package/conductor/archive/install_bootstrap_fastpath_20260220/metadata.json +0 -8
  157. package/conductor/archive/install_bootstrap_fastpath_20260220/plan.md +0 -28
  158. package/conductor/archive/install_bootstrap_fastpath_20260220/spec.md +0 -16
  159. package/conductor/archive/interface_reliability_pipeline_20260220/metadata.json +0 -8
  160. package/conductor/archive/interface_reliability_pipeline_20260220/plan.md +0 -28
  161. package/conductor/archive/interface_reliability_pipeline_20260220/spec.md +0 -16
  162. package/conductor/archive/local_state_backup_recovery_20260220/metadata.json +0 -8
  163. package/conductor/archive/local_state_backup_recovery_20260220/plan.md +0 -28
  164. package/conductor/archive/local_state_backup_recovery_20260220/spec.md +0 -17
  165. package/conductor/archive/mcp_runtime_sandboxing_20260220/metadata.json +0 -8
  166. package/conductor/archive/mcp_runtime_sandboxing_20260220/plan.md +0 -28
  167. package/conductor/archive/mcp_runtime_sandboxing_20260220/spec.md +0 -17
  168. package/conductor/archive/mcp_skill_registry_20260220/metadata.json +0 -8
  169. package/conductor/archive/mcp_skill_registry_20260220/plan.md +0 -19
  170. package/conductor/archive/mcp_skill_registry_20260220/spec.md +0 -15
  171. package/conductor/archive/message_streaming_chunking_20260221/index.md +0 -4
  172. package/conductor/archive/message_streaming_chunking_20260221/plan.md +0 -26
  173. package/conductor/archive/message_streaming_chunking_20260221/spec.md +0 -14
  174. package/conductor/archive/messaging_voice_20260220/index.md +0 -5
  175. package/conductor/archive/messaging_voice_20260220/metadata.json +0 -8
  176. package/conductor/archive/messaging_voice_20260220/plan.md +0 -25
  177. package/conductor/archive/messaging_voice_20260220/spec.md +0 -15
  178. package/conductor/archive/model_telemetry_fallback_controls_20260220/index.md +0 -5
  179. package/conductor/archive/model_telemetry_fallback_controls_20260220/metadata.json +0 -8
  180. package/conductor/archive/model_telemetry_fallback_controls_20260220/plan.md +0 -34
  181. package/conductor/archive/model_telemetry_fallback_controls_20260220/spec.md +0 -22
  182. package/conductor/archive/multi_agent_orchestration_20260220/metadata.json +0 -8
  183. package/conductor/archive/multi_agent_orchestration_20260220/plan.md +0 -28
  184. package/conductor/archive/multi_agent_orchestration_20260220/spec.md +0 -17
  185. package/conductor/archive/mvp_gate_v2_validation_20260221/index.md +0 -7
  186. package/conductor/archive/mvp_gate_v2_validation_20260221/metadata.json +0 -10
  187. package/conductor/archive/mvp_gate_v2_validation_20260221/plan.md +0 -18
  188. package/conductor/archive/mvp_gate_v2_validation_20260221/spec.md +0 -13
  189. package/conductor/archive/mvp_gate_wizard_alignment_20260221/index.md +0 -5
  190. package/conductor/archive/mvp_gate_wizard_alignment_20260221/metadata.json +0 -8
  191. package/conductor/archive/mvp_gate_wizard_alignment_20260221/plan.md +0 -28
  192. package/conductor/archive/mvp_gate_wizard_alignment_20260221/spec.md +0 -17
  193. package/conductor/archive/mvp_smoke_release_gate_20260220/index.md +0 -5
  194. package/conductor/archive/mvp_smoke_release_gate_20260220/metadata.json +0 -8
  195. package/conductor/archive/mvp_smoke_release_gate_20260220/plan.md +0 -28
  196. package/conductor/archive/mvp_smoke_release_gate_20260220/spec.md +0 -16
  197. package/conductor/archive/npm_command_reliability_20260220/index.md +0 -5
  198. package/conductor/archive/npm_command_reliability_20260220/metadata.json +0 -8
  199. package/conductor/archive/npm_command_reliability_20260220/plan.md +0 -38
  200. package/conductor/archive/npm_command_reliability_20260220/spec.md +0 -16
  201. package/conductor/archive/onboard_cli_wizard_20260221/index.md +0 -5
  202. package/conductor/archive/onboard_cli_wizard_20260221/metadata.json +0 -8
  203. package/conductor/archive/onboard_cli_wizard_20260221/plan.md +0 -28
  204. package/conductor/archive/onboard_cli_wizard_20260221/spec.md +0 -17
  205. package/conductor/archive/persona_state_sync_20260220/metadata.json +0 -8
  206. package/conductor/archive/persona_state_sync_20260220/plan.md +0 -28
  207. package/conductor/archive/persona_state_sync_20260220/spec.md +0 -22
  208. package/conductor/archive/proactive_execution_20260220/metadata.json +0 -8
  209. package/conductor/archive/proactive_execution_20260220/plan.md +0 -18
  210. package/conductor/archive/proactive_execution_20260220/spec.md +0 -9
  211. package/conductor/archive/release_pipeline_rollback_20260220/metadata.json +0 -8
  212. package/conductor/archive/release_pipeline_rollback_20260220/plan.md +0 -28
  213. package/conductor/archive/release_pipeline_rollback_20260220/spec.md +0 -17
  214. package/conductor/archive/release_rollback_drill_20260221/index.md +0 -7
  215. package/conductor/archive/release_rollback_drill_20260221/metadata.json +0 -10
  216. package/conductor/archive/release_rollback_drill_20260221/plan.md +0 -17
  217. package/conductor/archive/release_rollback_drill_20260221/spec.md +0 -14
  218. package/conductor/archive/reliability_evaluation_harness_20260220/metadata.json +0 -8
  219. package/conductor/archive/reliability_evaluation_harness_20260220/plan.md +0 -28
  220. package/conductor/archive/reliability_evaluation_harness_20260220/spec.md +0 -17
  221. package/conductor/archive/runtime_budget_governance_20260220/metadata.json +0 -8
  222. package/conductor/archive/runtime_budget_governance_20260220/plan.md +0 -26
  223. package/conductor/archive/runtime_budget_governance_20260220/spec.md +0 -20
  224. package/conductor/archive/runtime_env_migration_20260221/index.md +0 -5
  225. package/conductor/archive/runtime_env_migration_20260221/metadata.json +0 -8
  226. package/conductor/archive/runtime_env_migration_20260221/plan.md +0 -28
  227. package/conductor/archive/runtime_env_migration_20260221/spec.md +0 -17
  228. package/conductor/archive/runtime_health_doctor_20260220/index.md +0 -5
  229. package/conductor/archive/runtime_health_doctor_20260220/metadata.json +0 -8
  230. package/conductor/archive/runtime_health_doctor_20260220/plan.md +0 -28
  231. package/conductor/archive/runtime_health_doctor_20260220/spec.md +0 -16
  232. package/conductor/archive/secrets_hygiene_rotation_20260221/index.md +0 -15
  233. package/conductor/archive/secrets_hygiene_rotation_20260221/metadata.json +0 -10
  234. package/conductor/archive/secrets_hygiene_rotation_20260221/plan.md +0 -21
  235. package/conductor/archive/secrets_hygiene_rotation_20260221/spec.md +0 -13
  236. package/conductor/archive/secrets_vault_rotation_20260220/metadata.json +0 -8
  237. package/conductor/archive/secrets_vault_rotation_20260220/plan.md +0 -28
  238. package/conductor/archive/secrets_vault_rotation_20260220/spec.md +0 -17
  239. package/conductor/archive/semantic_memory_20260220/metadata.json +0 -8
  240. package/conductor/archive/semantic_memory_20260220/plan.md +0 -19
  241. package/conductor/archive/semantic_memory_20260220/spec.md +0 -10
  242. package/conductor/archive/skill_packaging_versioning_20260220/metadata.json +0 -8
  243. package/conductor/archive/skill_packaging_versioning_20260220/plan.md +0 -28
  244. package/conductor/archive/skill_packaging_versioning_20260220/spec.md +0 -17
  245. package/conductor/archive/test_coverage_matrix_20260220/metadata.json +0 -8
  246. package/conductor/archive/test_coverage_matrix_20260220/plan.md +0 -29
  247. package/conductor/archive/test_coverage_matrix_20260220/spec.md +0 -17
  248. package/conductor/archive/test_fk_unblock_20260220/index.md +0 -5
  249. package/conductor/archive/test_fk_unblock_20260220/metadata.json +0 -8
  250. package/conductor/archive/test_fk_unblock_20260220/plan.md +0 -62
  251. package/conductor/archive/test_fk_unblock_20260220/spec.md +0 -16
  252. package/conductor/archive/tool_inventory_mcp_harmonization_20260221/plan.md +0 -26
  253. package/conductor/archive/tool_inventory_mcp_harmonization_20260221/spec.md +0 -14
  254. package/conductor/archive/tool_policy_governance_20260220/metadata.json +0 -8
  255. package/conductor/archive/tool_policy_governance_20260220/plan.md +0 -28
  256. package/conductor/archive/tool_policy_governance_20260220/spec.md +0 -16
  257. package/conductor/archive/track_status_reconciliation_20260220/index.md +0 -5
  258. package/conductor/archive/track_status_reconciliation_20260220/metadata.json +0 -8
  259. package/conductor/archive/track_status_reconciliation_20260220/plan.md +0 -28
  260. package/conductor/archive/track_status_reconciliation_20260220/reconciliation_notes.md +0 -105
  261. package/conductor/archive/track_status_reconciliation_20260220/spec.md +0 -16
  262. package/conductor/archive/twinclaw_workspace_alignment_20260221/plan.md +0 -25
  263. package/conductor/archive/twinclaw_workspace_alignment_20260221/spec.md +0 -14
  264. package/conductor/archive/type_safety_debt_20260220/index.md +0 -5
  265. package/conductor/archive/type_safety_debt_20260220/metadata.json +0 -8
  266. package/conductor/archive/type_safety_debt_20260220/plan.md +0 -28
  267. package/conductor/archive/type_safety_debt_20260220/spec.md +0 -21
  268. package/conductor/archive/type_safety_reliability_stabilization_20260221/index.md +0 -7
  269. package/conductor/archive/type_safety_reliability_stabilization_20260221/metadata.json +0 -10
  270. package/conductor/archive/type_safety_reliability_stabilization_20260221/plan.md +0 -19
  271. package/conductor/archive/type_safety_reliability_stabilization_20260221/spec.md +0 -13
  272. package/conductor/archive/user_interfaces_20260220/metadata.json +0 -8
  273. package/conductor/archive/user_interfaces_20260220/plan.md +0 -19
  274. package/conductor/archive/user_interfaces_20260220/spec.md +0 -9
  275. package/conductor/archive/whatsapp_dispatcher_20260220/metadata.json +0 -8
  276. package/conductor/archive/whatsapp_dispatcher_20260220/plan.md +0 -19
  277. package/conductor/archive/whatsapp_dispatcher_20260220/spec.md +0 -15
  278. package/conductor/archive/windows_ci_powershell_alignment_20260221/index.md +0 -12
  279. package/conductor/archive/windows_ci_powershell_alignment_20260221/metadata.json +0 -11
  280. package/conductor/archive/windows_ci_powershell_alignment_20260221/plan.md +0 -18
  281. package/conductor/archive/windows_ci_powershell_alignment_20260221/spec.md +0 -18
  282. package/conductor/archive/windows_docs_alignment_20260221/index.md +0 -12
  283. package/conductor/archive/windows_docs_alignment_20260221/metadata.json +0 -11
  284. package/conductor/archive/windows_docs_alignment_20260221/plan.md +0 -18
  285. package/conductor/archive/windows_docs_alignment_20260221/spec.md +0 -20
  286. package/conductor/archive/windows_runtime_cli_enforcement_20260221/index.md +0 -12
  287. package/conductor/archive/windows_runtime_cli_enforcement_20260221/metadata.json +0 -11
  288. package/conductor/archive/windows_runtime_cli_enforcement_20260221/plan.md +0 -20
  289. package/conductor/archive/windows_runtime_cli_enforcement_20260221/spec.md +0 -20
  290. package/conductor/code_styleguides/node.md +0 -8
  291. package/conductor/code_styleguides/react.md +0 -9
  292. package/conductor/code_styleguides/typescript.md +0 -8
  293. package/conductor/conductor-new-track.md +0 -178
  294. package/conductor/conductor.md +0 -221
  295. package/conductor/index.md +0 -14
  296. package/conductor/product-guidelines.md +0 -17
  297. package/conductor/product.md +0 -34
  298. package/conductor/setup_state.json +0 -1
  299. package/conductor/tech-stack.md +0 -34
  300. package/conductor/tracks/onboarding_wizard_ux2_20260221/plan.md +0 -16
  301. package/conductor/tracks.md +0 -164
  302. package/conductor/workflow.md +0 -16
  303. package/docker-compose.yml +0 -15
  304. package/docs/PRD.md +0 -167
  305. package/docs/TwinClaw-blueprint.md +0 -225
  306. package/docs/configuration-guide.md +0 -112
  307. package/docs/gate-migration-notes.md +0 -20
  308. package/docs/model-apis.md +0 -19
  309. package/docs/mvp-release-checklist.md +0 -156
  310. package/docs/plan-for-agents.md +0 -104
  311. package/docs/project-audit.md +0 -187
  312. package/docs/release-rollback-runbook.md +0 -102
  313. package/docs/rotation-runbook.md +0 -96
  314. package/failures.txt +0 -3
  315. package/failures3.txt +0 -12
  316. package/gui/README.md +0 -73
  317. package/gui/eslint.config.js +0 -23
  318. package/gui/index.html +0 -13
  319. package/gui/package-lock.json +0 -4152
  320. package/gui/package.json +0 -33
  321. package/gui/postcss.config.js +0 -6
  322. package/gui/public/vite.svg +0 -1
  323. package/gui/src/App.css +0 -42
  324. package/gui/src/App.tsx +0 -526
  325. package/gui/src/assets/react.svg +0 -1
  326. package/gui/src/hooks/use-dashboard-data.ts +0 -56
  327. package/gui/src/hooks/use-websocket-stream.ts +0 -114
  328. package/gui/src/index.css +0 -25
  329. package/gui/src/main.tsx +0 -10
  330. package/gui/src/services/api.ts +0 -245
  331. package/gui/src/services/dashboard-poller.ts +0 -167
  332. package/gui/src/services/persona-editor-controller.ts +0 -231
  333. package/gui/src/services/websocket-client.ts +0 -281
  334. package/gui/tailwind.config.js +0 -23
  335. package/gui/tsconfig.app.json +0 -28
  336. package/gui/tsconfig.json +0 -7
  337. package/gui/tsconfig.node.json +0 -26
  338. package/gui/vite.config.ts +0 -7
  339. package/mcp-servers.json +0 -179
  340. package/out.json +0 -0
  341. package/out.txt +0 -0
  342. package/out2.json +0 -0
  343. package/out3.json +0 -0
  344. package/skill-packages.json +0 -92
  345. package/skill-packages.lock.json +0 -5
  346. package/src/api/handlers/browser.ts +0 -199
  347. package/src/api/handlers/callback.ts +0 -102
  348. package/src/api/handlers/config-validate.ts +0 -24
  349. package/src/api/handlers/local-state-backup.ts +0 -153
  350. package/src/api/handlers/persona-state.ts +0 -79
  351. package/src/api/handlers/skill-packages.ts +0 -116
  352. package/src/api/router.ts +0 -343
  353. package/src/api/runtime-event-producer.ts +0 -133
  354. package/src/api/shared.ts +0 -99
  355. package/src/api/websocket-hub.ts +0 -396
  356. package/src/config/config-loader.ts +0 -31
  357. package/src/config/env-schema.ts +0 -278
  358. package/src/config/env-validator.ts +0 -297
  359. package/src/config/identity-bootstrap.ts +0 -131
  360. package/src/config/json-config.ts +0 -365
  361. package/src/config/workspace.ts +0 -215
  362. package/src/core/channels-cli.ts +0 -90
  363. package/src/core/cli.ts +0 -122
  364. package/src/core/context-assembly.ts +0 -38
  365. package/src/core/doctor.ts +0 -408
  366. package/src/core/gateway-cli.ts +0 -400
  367. package/src/core/gateway.ts +0 -598
  368. package/src/core/heartbeat.ts +0 -72
  369. package/src/core/lane-executor.ts +0 -167
  370. package/src/core/logs-cli.ts +0 -77
  371. package/src/core/onboarding.ts +0 -851
  372. package/src/core/pairing-cli.ts +0 -102
  373. package/src/core/secret-vault-cli.ts +0 -243
  374. package/src/core/simplified-onboarding.ts +0 -372
  375. package/src/core/types.ts +0 -39
  376. package/src/index.ts +0 -487
  377. package/src/interfaces/dispatcher.ts +0 -284
  378. package/src/interfaces/telegram_handler.ts +0 -107
  379. package/src/interfaces/tui-dashboard.ts +0 -69
  380. package/src/interfaces/whatsapp_handler.ts +0 -114
  381. package/src/release/cli.ts +0 -122
  382. package/src/release/mvp-gate-cli.ts +0 -145
  383. package/src/release/twinclaw-config-schema.ts +0 -250
  384. package/src/services/block-chunker.ts +0 -212
  385. package/src/services/browser-service.ts +0 -452
  386. package/src/services/context-lifecycle.ts +0 -412
  387. package/src/services/db.ts +0 -1534
  388. package/src/services/delivery-tracker.ts +0 -147
  389. package/src/services/dm-pairing.ts +0 -338
  390. package/src/services/embedding-service.ts +0 -155
  391. package/src/services/file-watcher.ts +0 -154
  392. package/src/services/inbound-debounce.ts +0 -124
  393. package/src/services/incident-manager.ts +0 -666
  394. package/src/services/job-scheduler.ts +0 -221
  395. package/src/services/local-state-backup.ts +0 -843
  396. package/src/services/mcp-client-adapter.ts +0 -380
  397. package/src/services/mcp-server-manager.ts +0 -199
  398. package/src/services/model-router.ts +0 -1180
  399. package/src/services/mvp-gate.ts +0 -931
  400. package/src/services/orchestration-service.ts +0 -606
  401. package/src/services/persona-state.ts +0 -358
  402. package/src/services/policy-engine.ts +0 -106
  403. package/src/services/proactive-notifier.ts +0 -122
  404. package/src/services/queue-service.ts +0 -204
  405. package/src/services/release-pipeline.ts +0 -810
  406. package/src/services/runtime-budget-governor.ts +0 -556
  407. package/src/services/secret-vault.ts +0 -970
  408. package/src/services/semantic-memory.ts +0 -339
  409. package/src/services/skill-package-manager.ts +0 -1114
  410. package/src/services/skill-registry.ts +0 -151
  411. package/src/services/streaming-output.ts +0 -113
  412. package/src/services/stt-service.ts +0 -48
  413. package/src/services/tts-service.ts +0 -57
  414. package/src/skills/builtin.ts +0 -275
  415. package/src/skills/shell.ts +0 -118
  416. package/src/skills/types.ts +0 -30
  417. package/src/types/api.ts +0 -252
  418. package/src/types/blessed-contrib.d.ts +0 -4
  419. package/src/types/context-budget.ts +0 -76
  420. package/src/types/doctor.ts +0 -29
  421. package/src/types/file-watcher.ts +0 -26
  422. package/src/types/incident.ts +0 -57
  423. package/src/types/local-state-backup.ts +0 -121
  424. package/src/types/mcp.ts +0 -106
  425. package/src/types/messaging.ts +0 -35
  426. package/src/types/model-routing.ts +0 -61
  427. package/src/types/mvp-gate.ts +0 -98
  428. package/src/types/orchestration.ts +0 -65
  429. package/src/types/persona-state.ts +0 -61
  430. package/src/types/policy.ts +0 -27
  431. package/src/types/reasoning-graph.ts +0 -58
  432. package/src/types/release.ts +0 -115
  433. package/src/types/reliability.ts +0 -43
  434. package/src/types/runtime-budget.ts +0 -85
  435. package/src/types/scheduler.ts +0 -47
  436. package/src/types/secret-vault.ts +0 -62
  437. package/src/types/skill-packages.ts +0 -81
  438. package/src/types/sqlite-vec.d.ts +0 -5
  439. package/src/types/websocket.ts +0 -122
  440. package/src/utils/logger.ts +0 -78
  441. package/src/utils/retry.ts +0 -100
  442. package/src/utils/secret-scan.ts +0 -261
  443. package/tests/api/browser-reference.spec.ts +0 -154
  444. package/tests/api/callback.spec.ts +0 -122
  445. package/tests/api/control-plane.spec.ts +0 -424
  446. package/tests/api/health.spec.ts +0 -177
  447. package/tests/api/persona-state.spec.ts +0 -91
  448. package/tests/api/websocket-hub.spec.ts +0 -461
  449. package/tests/config/json-config.spec.ts +0 -77
  450. package/tests/config/workspace.spec.ts +0 -275
  451. package/tests/core/cli.spec.ts +0 -156
  452. package/tests/core/doctor.spec.ts +0 -356
  453. package/tests/core/gateway-cli.spec.ts +0 -60
  454. package/tests/core/logs-cli.spec.ts +0 -80
  455. package/tests/core/onboarding-setup.spec.ts +0 -160
  456. package/tests/core/onboarding-wizard.spec.ts +0 -134
  457. package/tests/core/pairing-cli.spec.ts +0 -65
  458. package/tests/gui/persona-editor-controller.spec.ts +0 -113
  459. package/tests/gui/use-dashboard-data.spec.ts +0 -150
  460. package/tests/harness/context-lifecycle.spec.ts +0 -90
  461. package/tests/harness/delivery-tracker.spec.ts +0 -61
  462. package/tests/harness/dispatcher-reliability.spec.ts +0 -86
  463. package/tests/harness/dispatcher-streaming.spec.ts +0 -238
  464. package/tests/harness/incident-manager.spec.ts +0 -241
  465. package/tests/harness/local-state-backup.spec.ts +0 -257
  466. package/tests/harness/mcp-sandboxing.spec.ts +0 -142
  467. package/tests/harness/mock-router.ts +0 -78
  468. package/tests/harness/model-router.spec.ts +0 -274
  469. package/tests/harness/mvp-gate.spec.ts +0 -487
  470. package/tests/harness/orchestration-edge.spec.ts +0 -135
  471. package/tests/harness/persona-state-service.spec.ts +0 -110
  472. package/tests/harness/policy-engine.spec.ts +0 -85
  473. package/tests/harness/reasoning-graph.spec.ts +0 -121
  474. package/tests/harness/release-pipeline.spec.ts +0 -207
  475. package/tests/harness/retry.spec.ts +0 -51
  476. package/tests/harness/runner.spec.ts +0 -368
  477. package/tests/harness/runtime-budget-governor.spec.ts +0 -152
  478. package/tests/harness/skill-package-manager.spec.ts +0 -234
  479. package/tests/harness/tool-inventory-harmonization.spec.ts +0 -156
  480. package/tests/harness/types.ts +0 -35
  481. package/tests/policy/policy-engine.spec.ts +0 -95
  482. package/tests/queue/queue-service.spec.ts +0 -82
  483. package/tests/screenshot.png +0 -0
  484. package/tests/services/browser-reference.spec.ts +0 -69
  485. package/tests/services/config-env-validation.spec.ts +0 -352
  486. package/tests/services/config-loader.spec.ts +0 -75
  487. package/tests/services/dm-pairing.spec.ts +0 -82
  488. package/tests/services/mcp-registry.spec.ts +0 -281
  489. package/tests/services/messaging-voice.spec.ts +0 -225
  490. package/tests/services/proactive-execution.spec.ts +0 -393
  491. package/tests/services/secret-vault.spec.ts +0 -116
  492. package/tests/test-browser.ts +0 -24
  493. package/tests/utils/logger.spec.ts +0 -28
  494. package/tsconfig.json +0 -17
  495. package/twinclaw.default.json +0 -41
  496. package/vitest.config.ts +0 -18
  497. package/vitest.workspace.ts +0 -0
  498. package/vitest_output.txt +0 -0
@@ -1,144 +1,149 @@
1
- import type { Request, Response } from 'express';
2
- import type { HealthData } from '../../types/api.js';
3
- import type { SkillRegistry } from '../../services/skill-registry.js';
4
- import type { McpServerManager } from '../../services/mcp-server-manager.js';
5
- import type { HeartbeatService } from '../../core/heartbeat.js';
6
- import type { RuntimeBudgetGovernor } from '../../services/runtime-budget-governor.js';
7
- import type { LocalStateBackupService } from '../../services/local-state-backup.js';
8
- import type { ModelRouter } from '../../services/model-router.js';
9
- import { getSecretVaultService } from '../../services/secret-vault.js';
10
- import { sendOk } from '../shared.js';
11
-
12
- const startTime = Date.now();
13
-
14
- export interface HealthDeps {
15
- heartbeat: HeartbeatService;
16
- skillRegistry: SkillRegistry;
17
- mcpManager: McpServerManager;
18
- budgetGovernor?: RuntimeBudgetGovernor;
19
- localStateBackup?: LocalStateBackupService;
20
- modelRouter?: ModelRouter;
21
- }
22
-
23
- /** GET /health — Returns system health status and subsystem summaries. */
24
- export function handleHealth(deps: HealthDeps) {
25
- return async (_req: Request, res: Response): Promise<void> => {
26
- const summary = deps.skillRegistry.summary();
27
- const servers = deps.mcpManager.listServers();
28
- const packageDiagnostics = await deps.mcpManager.getSkillPackageDiagnostics();
29
- const secretDiagnostics = getSecretVaultService().getDiagnostics(['API_SECRET']);
30
- const budgetSnapshot = deps.budgetGovernor?.getSnapshot('health');
31
- const routingSnapshot = deps.modelRouter?.getHealthSnapshot();
32
- const backupDiagnostics = deps.localStateBackup
33
- ? await deps.localStateBackup.getDiagnostics(5)
34
- : null;
35
- const heartbeatRunning = deps.heartbeat.scheduler
36
- .listJobs()
37
- .some((j) => j.status === 'running');
38
-
39
- const data: HealthData = {
40
- status:
41
- servers.some((s) => s.state === 'error') ||
42
- packageDiagnostics.blockedPackageCount > 0 ||
43
- secretDiagnostics.health.hasIssues ||
44
- budgetSnapshot?.directive.severity === 'hard_limit' ||
45
- (routingSnapshot?.consecutiveFailures ?? 0) >= 3 ||
46
- backupDiagnostics?.status === 'degraded'
47
- ? 'degraded'
48
- : 'ok',
49
- uptimeSec: Math.floor((Date.now() - startTime) / 1000),
50
- memoryUsageMb: Math.round(process.memoryUsage().rss / 1024 / 1024),
51
- heartbeat: { running: heartbeatRunning },
52
- skills: {
53
- builtin: summary.builtin ?? 0,
54
- mcp: summary.mcp ?? 0,
55
- total: deps.skillRegistry.size,
56
- },
57
- skillPackages: {
58
- installed: packageDiagnostics.installed.length,
59
- active: packageDiagnostics.activePackageCount,
60
- blocked: packageDiagnostics.blockedPackageCount,
61
- warnings: packageDiagnostics.warnings,
62
- violations: packageDiagnostics.violations.map((violation) => ({
63
- packageName: violation.packageName,
64
- version: violation.version,
65
- code: violation.code,
66
- message: violation.message,
67
- remediation: violation.remediation,
68
- })),
69
- },
70
- secrets: {
71
- status: secretDiagnostics.health.hasIssues ? 'degraded' : 'ok',
72
- missingRequired: secretDiagnostics.health.missingRequired,
73
- expired: secretDiagnostics.health.expired,
74
- warnings: secretDiagnostics.health.warnings,
75
- total: secretDiagnostics.total,
76
- active: secretDiagnostics.active,
77
- dueForRotation: secretDiagnostics.dueForRotation,
78
- },
79
- budget: budgetSnapshot
80
- ? {
81
- severity: budgetSnapshot.directive.severity,
82
- profile: budgetSnapshot.directive.profile,
83
- pacingDelayMs: budgetSnapshot.directive.pacingDelayMs,
84
- manualProfile: budgetSnapshot.manualProfile,
85
- daily: budgetSnapshot.daily,
86
- session: budgetSnapshot.session,
87
- providers: budgetSnapshot.providers,
88
- }
89
- : undefined,
90
- routing: routingSnapshot,
91
- backups: backupDiagnostics
92
- ? {
93
- status: backupDiagnostics.status,
94
- lastSnapshotAt: backupDiagnostics.lastSnapshotAt,
95
- lastRestoreAt: backupDiagnostics.lastRestoreAt,
96
- validationFailureCount: backupDiagnostics.validationFailureCount,
97
- recommendationCount: backupDiagnostics.recommendations.length,
98
- }
99
- : undefined,
100
- mcpServers: servers.map((s) => ({
101
- id: s.id,
102
- name: s.name,
103
- state: s.state,
104
- toolCount: s.toolCount,
105
- health: {
106
- circuit: s.health.state,
107
- failureCount: s.health.metrics.failureCount,
108
- remainingCooldownMs: s.health.remainingCooldownMs,
109
- },
110
- })),
111
- };
112
-
113
- sendOk(res, data);
114
- };
115
- }
116
-
117
- /** GET /health/live — Fast liveness probe for orchestrators (e.g. k8s) */
118
- export function handleLiveness() {
119
- return (_req: Request, res: Response): void => {
120
- sendOk(res, { status: 'alive', uptimeSec: Math.floor((Date.now() - startTime) / 1000) });
121
- };
122
- }
123
-
124
- /** GET /health/ready — Readiness probe for load balancers */
125
- export function handleReadiness(deps: HealthDeps) {
126
- return (_req: Request, res: Response): void => {
127
- const heartbeatRunning = deps.heartbeat.scheduler
128
- .listJobs()
129
- .some((j) => j.status === 'running');
130
-
131
- if (!heartbeatRunning) {
132
- res.status(503).json({ status: 'not_ready', reason: 'Heartbeat scheduler offline' });
133
- return;
134
- }
135
-
136
- const secretDiagnostics = getSecretVaultService().getDiagnostics(['API_SECRET']);
137
- if (secretDiagnostics.health.missingRequired.length > 0) {
138
- res.status(503).json({ status: 'not_ready', reason: 'Missing critical secrets' });
139
- return;
140
- }
141
-
142
- sendOk(res, { status: 'ready' });
143
- };
144
- }
1
+ import { getSecretVaultService } from '../../services/secret-vault.js';
2
+ import { sendOk } from '../shared.js';
3
+ const startTime = Date.now();
4
+ function getVersion() {
5
+ try {
6
+ const pkg = JSON.parse(require.resolve('../../package.json').replace('file://', ''));
7
+ return pkg.version ?? '1.0.0';
8
+ }
9
+ catch {
10
+ return '1.0.0';
11
+ }
12
+ }
13
+ /** GET /status — Unified diagnostics view combining health + budget + routing + jobs + agents + devices */
14
+ export function handleStatus(deps) {
15
+ return async (_req, res) => {
16
+ const summary = deps.skillRegistry.summary();
17
+ const servers = deps.mcpManager.listServers();
18
+ const packageDiagnostics = await deps.mcpManager.getSkillPackageDiagnostics();
19
+ const secretDiagnostics = getSecretVaultService().getDiagnostics(['API_SECRET']);
20
+ const budgetSnapshot = deps.budgetGovernor?.getSnapshot('health');
21
+ const routingSnapshot = deps.modelRouter?.getHealthSnapshot();
22
+ const backupDiagnostics = deps.localStateBackup
23
+ ? await deps.localStateBackup.getDiagnostics(5)
24
+ : null;
25
+ const heartbeatRunning = deps.heartbeat.scheduler
26
+ .listJobs()
27
+ .some((j) => j.status === 'running');
28
+ const healthData = {
29
+ status: servers.some((s) => s.state === 'error') ||
30
+ packageDiagnostics.blockedPackageCount > 0 ||
31
+ secretDiagnostics.health.hasIssues ||
32
+ budgetSnapshot?.directive.severity === 'hard_limit' ||
33
+ (routingSnapshot?.consecutiveFailures ?? 0) >= 3 ||
34
+ backupDiagnostics?.status === 'degraded'
35
+ ? 'degraded'
36
+ : 'ok',
37
+ uptimeSec: Math.floor((Date.now() - startTime) / 1000),
38
+ memoryUsageMb: Math.round(process.memoryUsage().rss / 1024 / 1024),
39
+ heartbeat: { running: heartbeatRunning },
40
+ skills: {
41
+ builtin: summary.builtin ?? 0,
42
+ mcp: summary.mcp ?? 0,
43
+ total: deps.skillRegistry.size,
44
+ },
45
+ skillPackages: {
46
+ installed: packageDiagnostics.installed.length,
47
+ active: packageDiagnostics.activePackageCount,
48
+ blocked: packageDiagnostics.blockedPackageCount,
49
+ warnings: packageDiagnostics.warnings,
50
+ violations: packageDiagnostics.violations.map((violation) => ({
51
+ packageName: violation.packageName,
52
+ version: violation.version,
53
+ code: violation.code,
54
+ message: violation.message,
55
+ remediation: violation.remediation,
56
+ })),
57
+ },
58
+ secrets: {
59
+ status: secretDiagnostics.health.hasIssues ? 'degraded' : 'ok',
60
+ missingRequired: secretDiagnostics.health.missingRequired,
61
+ expired: secretDiagnostics.health.expired,
62
+ warnings: secretDiagnostics.health.warnings,
63
+ total: secretDiagnostics.total,
64
+ active: secretDiagnostics.active,
65
+ dueForRotation: secretDiagnostics.dueForRotation,
66
+ },
67
+ budget: budgetSnapshot
68
+ ? {
69
+ severity: budgetSnapshot.directive.severity,
70
+ profile: budgetSnapshot.directive.profile,
71
+ pacingDelayMs: budgetSnapshot.directive.pacingDelayMs,
72
+ manualProfile: budgetSnapshot.manualProfile,
73
+ daily: budgetSnapshot.daily,
74
+ session: budgetSnapshot.session,
75
+ providers: budgetSnapshot.providers,
76
+ }
77
+ : undefined,
78
+ routing: routingSnapshot,
79
+ backups: backupDiagnostics
80
+ ? {
81
+ status: backupDiagnostics.status,
82
+ lastSnapshotAt: backupDiagnostics.lastSnapshotAt,
83
+ lastRestoreAt: backupDiagnostics.lastRestoreAt,
84
+ validationFailureCount: backupDiagnostics.validationFailureCount,
85
+ recommendationCount: backupDiagnostics.recommendations.length,
86
+ }
87
+ : undefined,
88
+ mcpServers: servers.map((s) => ({
89
+ id: s.id,
90
+ name: s.name,
91
+ state: s.state,
92
+ toolCount: s.toolCount,
93
+ health: {
94
+ circuit: s.health.state,
95
+ failureCount: s.health.metrics.failureCount,
96
+ remainingCooldownMs: s.health.remainingCooldownMs,
97
+ },
98
+ })),
99
+ };
100
+ const jobList = deps.jobScheduler?.listJobs() ?? [];
101
+ const agentList = deps.subAgentService?.list() ?? [];
102
+ const deviceList = deps.devicePairingService?.list() ?? [];
103
+ const currentIncidents = deps.incidentManager?.getCurrentIncidents() ?? [];
104
+ const data = {
105
+ status: healthData.status,
106
+ uptimeSec: healthData.uptimeSec,
107
+ memoryUsageMb: healthData.memoryUsageMb,
108
+ version: getVersion(),
109
+ health: healthData,
110
+ jobs: {
111
+ count: jobList.length,
112
+ list: jobList.map((j) => ({
113
+ id: j.id,
114
+ cronExpression: j.cronExpression,
115
+ description: j.description,
116
+ status: j.status,
117
+ lastRunAt: j.lastRunAt?.toISOString() ?? null,
118
+ lastError: j.lastError,
119
+ })),
120
+ },
121
+ agents: {
122
+ count: agentList.length,
123
+ list: agentList.map((a) => ({
124
+ id: a.id,
125
+ name: a.name,
126
+ status: a.status,
127
+ createdAt: a.createdAt.toISOString(),
128
+ startedAt: a.startedAt?.toISOString(),
129
+ completedAt: a.completedAt?.toISOString(),
130
+ })),
131
+ },
132
+ devices: {
133
+ count: deviceList.length,
134
+ list: deviceList.map((d) => ({
135
+ deviceId: d.deviceId,
136
+ displayName: d.displayName,
137
+ platform: d.platform,
138
+ status: d.status,
139
+ lastSeenAt: d.lastSeenAt,
140
+ })),
141
+ },
142
+ incidents: {
143
+ safeMode: deps.incidentManager?.isSafeModeEnabled() ?? false,
144
+ count: currentIncidents.length,
145
+ },
146
+ };
147
+ sendOk(res, data);
148
+ };
149
+ }