stable-harness 0.0.37 → 0.0.38

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 (231) hide show
  1. package/node_modules/@stable-harness/adapter-deepagents/dist/src/adapter.d.ts +9 -0
  2. package/node_modules/@stable-harness/adapter-deepagents/dist/src/adapter.js +1 -0
  3. package/node_modules/@stable-harness/adapter-deepagents/dist/src/index.d.ts +4 -0
  4. package/node_modules/@stable-harness/adapter-deepagents/dist/src/index.js +1 -0
  5. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-args.d.ts +5 -0
  6. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-args.js +1 -0
  7. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-call-repair.d.ts +9 -0
  8. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-call-repair.js +1 -0
  9. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-tool-policy.d.ts +39 -0
  10. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-tool-policy.js +1 -0
  11. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-evidence.d.ts +10 -0
  12. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-evidence.js +1 -0
  13. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-failure-events.d.ts +2 -0
  14. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-failure-events.js +1 -0
  15. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway-tools.d.ts +33 -0
  16. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway-tools.js +1 -0
  17. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/messages.d.ts +9 -0
  18. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/messages.js +1 -0
  19. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/raw-tool-call-parser.d.ts +12 -0
  20. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/raw-tool-call-parser.js +1 -0
  21. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/skill-file-policy.d.ts +10 -0
  22. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/skill-file-policy.js +1 -0
  23. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/stream-events.d.ts +2 -0
  24. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/stream-events.js +1 -0
  25. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/tool-repeat-visibility.d.ts +4 -0
  26. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/tool-repeat-visibility.js +1 -0
  27. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/trace-projection.d.ts +16 -0
  28. package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/trace-projection.js +1 -0
  29. package/node_modules/@stable-harness/adapter-deepagents/dist/src/memory.d.ts +5 -0
  30. package/node_modules/@stable-harness/adapter-deepagents/dist/src/memory.js +1 -0
  31. package/node_modules/@stable-harness/adapter-deepagents/dist/src/model-providers.d.ts +4 -0
  32. package/node_modules/@stable-harness/adapter-deepagents/dist/src/model-providers.js +1 -0
  33. package/node_modules/@stable-harness/adapter-deepagents/dist/src/retry-policy.d.ts +2 -0
  34. package/node_modules/@stable-harness/adapter-deepagents/dist/src/retry-policy.js +1 -0
  35. package/node_modules/@stable-harness/adapter-deepagents/dist/src/types.d.ts +12 -0
  36. package/node_modules/@stable-harness/adapter-deepagents/dist/src/types.js +1 -0
  37. package/node_modules/@stable-harness/adapter-deepagents/package.json +26 -0
  38. package/node_modules/@stable-harness/adapter-langgraph/dist/src/graph.d.ts +3 -0
  39. package/node_modules/@stable-harness/adapter-langgraph/dist/src/graph.js +1 -0
  40. package/node_modules/@stable-harness/adapter-langgraph/dist/src/index.d.ts +8 -0
  41. package/node_modules/@stable-harness/adapter-langgraph/dist/src/index.js +1 -0
  42. package/node_modules/@stable-harness/adapter-langgraph/dist/src/runtime.d.ts +3 -0
  43. package/node_modules/@stable-harness/adapter-langgraph/dist/src/runtime.js +1 -0
  44. package/node_modules/@stable-harness/adapter-langgraph/dist/src/skill-providers.d.ts +29 -0
  45. package/node_modules/@stable-harness/adapter-langgraph/dist/src/skill-providers.js +1 -0
  46. package/node_modules/@stable-harness/adapter-langgraph/dist/src/types.d.ts +60 -0
  47. package/node_modules/@stable-harness/adapter-langgraph/dist/src/types.js +1 -0
  48. package/node_modules/@stable-harness/adapter-langgraph/package.json +16 -0
  49. package/node_modules/@stable-harness/core/dist/boundary-scan.d.ts +38 -0
  50. package/node_modules/@stable-harness/core/dist/boundary-scan.js +1 -0
  51. package/node_modules/@stable-harness/core/dist/evaluations/index.d.ts +18 -0
  52. package/node_modules/@stable-harness/core/dist/evaluations/index.js +1 -0
  53. package/node_modules/@stable-harness/core/dist/execution-contract.d.ts +9 -0
  54. package/node_modules/@stable-harness/core/dist/execution-contract.js +1 -0
  55. package/node_modules/@stable-harness/core/dist/index.d.ts +20 -0
  56. package/node_modules/@stable-harness/core/dist/index.js +1 -0
  57. package/node_modules/@stable-harness/core/dist/memory-plugins/maintenance.d.ts +42 -0
  58. package/node_modules/@stable-harness/core/dist/memory-plugins/maintenance.js +1 -0
  59. package/node_modules/@stable-harness/core/dist/memory-plugins/shared.d.ts +8 -0
  60. package/node_modules/@stable-harness/core/dist/memory-plugins/shared.js +1 -0
  61. package/node_modules/@stable-harness/core/dist/memory-plugins.d.ts +25 -0
  62. package/node_modules/@stable-harness/core/dist/memory-plugins.js +1 -0
  63. package/node_modules/@stable-harness/core/dist/quality/event-evidence.d.ts +11 -0
  64. package/node_modules/@stable-harness/core/dist/quality/event-evidence.js +1 -0
  65. package/node_modules/@stable-harness/core/dist/quality/execution-review.d.ts +2 -0
  66. package/node_modules/@stable-harness/core/dist/quality/execution-review.js +1 -0
  67. package/node_modules/@stable-harness/core/dist/quality/index.d.ts +9 -0
  68. package/node_modules/@stable-harness/core/dist/quality/index.js +1 -0
  69. package/node_modules/@stable-harness/core/dist/quality/llm-review.d.ts +7 -0
  70. package/node_modules/@stable-harness/core/dist/quality/llm-review.js +1 -0
  71. package/node_modules/@stable-harness/core/dist/quality/planning-review.d.ts +2 -0
  72. package/node_modules/@stable-harness/core/dist/quality/planning-review.js +1 -0
  73. package/node_modules/@stable-harness/core/dist/quality/profile.d.ts +3 -0
  74. package/node_modules/@stable-harness/core/dist/quality/profile.js +1 -0
  75. package/node_modules/@stable-harness/core/dist/quality/recovery-policy.d.ts +11 -0
  76. package/node_modules/@stable-harness/core/dist/quality/recovery-policy.js +1 -0
  77. package/node_modules/@stable-harness/core/dist/quality/runtime.d.ts +13 -0
  78. package/node_modules/@stable-harness/core/dist/quality/runtime.js +1 -0
  79. package/node_modules/@stable-harness/core/dist/quality/synthesis/fields.d.ts +19 -0
  80. package/node_modules/@stable-harness/core/dist/quality/synthesis/fields.js +1 -0
  81. package/node_modules/@stable-harness/core/dist/quality/synthesis/language.d.ts +3 -0
  82. package/node_modules/@stable-harness/core/dist/quality/synthesis/language.js +1 -0
  83. package/node_modules/@stable-harness/core/dist/quality/synthesis/observed.d.ts +3 -0
  84. package/node_modules/@stable-harness/core/dist/quality/synthesis/observed.js +1 -0
  85. package/node_modules/@stable-harness/core/dist/quality/synthesis.d.ts +2 -0
  86. package/node_modules/@stable-harness/core/dist/quality/synthesis.js +1 -0
  87. package/node_modules/@stable-harness/core/dist/quality/types.d.ts +52 -0
  88. package/node_modules/@stable-harness/core/dist/quality/types.js +1 -0
  89. package/node_modules/@stable-harness/core/dist/recovery/tool-call.d.ts +28 -0
  90. package/node_modules/@stable-harness/core/dist/recovery/tool-call.js +1 -0
  91. package/node_modules/@stable-harness/core/dist/runtime/capabilities.d.ts +47 -0
  92. package/node_modules/@stable-harness/core/dist/runtime/capabilities.js +1 -0
  93. package/node_modules/@stable-harness/core/dist/runtime/completion.d.ts +18 -0
  94. package/node_modules/@stable-harness/core/dist/runtime/completion.js +1 -0
  95. package/node_modules/@stable-harness/core/dist/runtime/direct-tool-call.d.ts +11 -0
  96. package/node_modules/@stable-harness/core/dist/runtime/direct-tool-call.js +1 -0
  97. package/node_modules/@stable-harness/core/dist/runtime/events.d.ts +295 -0
  98. package/node_modules/@stable-harness/core/dist/runtime/events.js +1 -0
  99. package/node_modules/@stable-harness/core/dist/runtime/governance/approval-gate.d.ts +8 -0
  100. package/node_modules/@stable-harness/core/dist/runtime/governance/approval-gate.js +1 -0
  101. package/node_modules/@stable-harness/core/dist/runtime/governance/sandbox.d.ts +9 -0
  102. package/node_modules/@stable-harness/core/dist/runtime/governance/sandbox.js +1 -0
  103. package/node_modules/@stable-harness/core/dist/runtime/inspection/artifacts.d.ts +15 -0
  104. package/node_modules/@stable-harness/core/dist/runtime/inspection/artifacts.js +1 -0
  105. package/node_modules/@stable-harness/core/dist/runtime/inspection/methods.d.ts +11 -0
  106. package/node_modules/@stable-harness/core/dist/runtime/inspection/methods.js +1 -0
  107. package/node_modules/@stable-harness/core/dist/runtime/inspection/replay.d.ts +6 -0
  108. package/node_modules/@stable-harness/core/dist/runtime/inspection/replay.js +1 -0
  109. package/node_modules/@stable-harness/core/dist/runtime/memory.d.ts +29 -0
  110. package/node_modules/@stable-harness/core/dist/runtime/memory.js +1 -0
  111. package/node_modules/@stable-harness/core/dist/runtime/persistence/artifacts.d.ts +8 -0
  112. package/node_modules/@stable-harness/core/dist/runtime/persistence/artifacts.js +1 -0
  113. package/node_modules/@stable-harness/core/dist/runtime/persistence/inspection.d.ts +4 -0
  114. package/node_modules/@stable-harness/core/dist/runtime/persistence/inspection.js +1 -0
  115. package/node_modules/@stable-harness/core/dist/runtime/persistence/queue.d.ts +2 -0
  116. package/node_modules/@stable-harness/core/dist/runtime/persistence/queue.js +1 -0
  117. package/node_modules/@stable-harness/core/dist/runtime/persistence/stores.d.ts +3 -0
  118. package/node_modules/@stable-harness/core/dist/runtime/persistence/stores.js +1 -0
  119. package/node_modules/@stable-harness/core/dist/runtime/progress-narration.d.ts +38 -0
  120. package/node_modules/@stable-harness/core/dist/runtime/progress-narration.js +1 -0
  121. package/node_modules/@stable-harness/core/dist/runtime/selection-repair.d.ts +24 -0
  122. package/node_modules/@stable-harness/core/dist/runtime/selection-repair.js +1 -0
  123. package/node_modules/@stable-harness/core/dist/runtime/tool-failure.d.ts +41 -0
  124. package/node_modules/@stable-harness/core/dist/runtime/tool-failure.js +1 -0
  125. package/node_modules/@stable-harness/core/dist/runtime/tool-gateway.d.ts +59 -0
  126. package/node_modules/@stable-harness/core/dist/runtime/tool-gateway.js +1 -0
  127. package/node_modules/@stable-harness/core/dist/runtime/types.d.ts +191 -0
  128. package/node_modules/@stable-harness/core/dist/runtime/types.js +1 -0
  129. package/node_modules/@stable-harness/core/dist/runtime.d.ts +21 -0
  130. package/node_modules/@stable-harness/core/dist/runtime.js +1 -0
  131. package/node_modules/@stable-harness/core/dist/spec-driven/config.d.ts +4 -0
  132. package/node_modules/@stable-harness/core/dist/spec-driven/config.js +1 -0
  133. package/node_modules/@stable-harness/core/dist/spec-driven/events.d.ts +11 -0
  134. package/node_modules/@stable-harness/core/dist/spec-driven/events.js +1 -0
  135. package/node_modules/@stable-harness/core/dist/spec-driven/index.d.ts +4 -0
  136. package/node_modules/@stable-harness/core/dist/spec-driven/index.js +1 -0
  137. package/node_modules/@stable-harness/core/dist/spec-driven/lifecycle.d.ts +11 -0
  138. package/node_modules/@stable-harness/core/dist/spec-driven/lifecycle.js +1 -0
  139. package/node_modules/@stable-harness/core/dist/spec-driven/types.d.ts +38 -0
  140. package/node_modules/@stable-harness/core/dist/spec-driven/types.js +1 -0
  141. package/node_modules/@stable-harness/core/dist/trace.d.ts +15 -0
  142. package/node_modules/@stable-harness/core/dist/trace.js +1 -0
  143. package/node_modules/@stable-harness/core/dist/types.d.ts +144 -0
  144. package/node_modules/@stable-harness/core/dist/types.js +1 -0
  145. package/node_modules/@stable-harness/core/dist/workflows/index.d.ts +70 -0
  146. package/node_modules/@stable-harness/core/dist/workflows/index.js +1 -0
  147. package/node_modules/@stable-harness/core/dist/workflows/runtime.d.ts +12 -0
  148. package/node_modules/@stable-harness/core/dist/workflows/runtime.js +1 -0
  149. package/node_modules/@stable-harness/core/dist/workspace/tool-quality.d.ts +22 -0
  150. package/node_modules/@stable-harness/core/dist/workspace/tool-quality.js +1 -0
  151. package/node_modules/@stable-harness/core/dist/workspace/types.d.ts +134 -0
  152. package/node_modules/@stable-harness/core/dist/workspace/types.js +1 -0
  153. package/node_modules/@stable-harness/core/package.json +18 -0
  154. package/node_modules/@stable-harness/governance/dist/src/approval-queue.d.ts +2 -0
  155. package/node_modules/@stable-harness/governance/dist/src/approval-queue.js +1 -0
  156. package/node_modules/@stable-harness/governance/dist/src/index.d.ts +4 -0
  157. package/node_modules/@stable-harness/governance/dist/src/index.js +1 -0
  158. package/node_modules/@stable-harness/governance/dist/src/policy-engine.d.ts +2 -0
  159. package/node_modules/@stable-harness/governance/dist/src/policy-engine.js +1 -0
  160. package/node_modules/@stable-harness/governance/dist/src/skill-candidates.d.ts +2 -0
  161. package/node_modules/@stable-harness/governance/dist/src/skill-candidates.js +1 -0
  162. package/node_modules/@stable-harness/governance/dist/src/types.d.ts +101 -0
  163. package/node_modules/@stable-harness/governance/dist/src/types.js +1 -0
  164. package/node_modules/@stable-harness/governance/package.json +12 -0
  165. package/node_modules/@stable-harness/memory/dist/src/index.d.ts +9 -0
  166. package/node_modules/@stable-harness/memory/dist/src/index.js +1 -0
  167. package/node_modules/@stable-harness/memory/dist/src/langmem-service.d.ts +8 -0
  168. package/node_modules/@stable-harness/memory/dist/src/langmem-service.js +1 -0
  169. package/node_modules/@stable-harness/memory/dist/src/maintenance.d.ts +2 -0
  170. package/node_modules/@stable-harness/memory/dist/src/maintenance.js +1 -0
  171. package/node_modules/@stable-harness/memory/dist/src/persistence.d.ts +4 -0
  172. package/node_modules/@stable-harness/memory/dist/src/persistence.js +1 -0
  173. package/node_modules/@stable-harness/memory/dist/src/policy.d.ts +2 -0
  174. package/node_modules/@stable-harness/memory/dist/src/policy.js +1 -0
  175. package/node_modules/@stable-harness/memory/dist/src/provider.d.ts +50 -0
  176. package/node_modules/@stable-harness/memory/dist/src/provider.js +1 -0
  177. package/node_modules/@stable-harness/memory/dist/src/store.d.ts +5 -0
  178. package/node_modules/@stable-harness/memory/dist/src/store.js +1 -0
  179. package/node_modules/@stable-harness/memory/dist/src/types.d.ts +138 -0
  180. package/node_modules/@stable-harness/memory/dist/src/types.js +1 -0
  181. package/node_modules/@stable-harness/memory/package.json +12 -0
  182. package/node_modules/@stable-harness/protocols/dist/src/http-server.d.ts +3 -0
  183. package/node_modules/@stable-harness/protocols/dist/src/http-server.js +1 -0
  184. package/node_modules/@stable-harness/protocols/dist/src/in-process-client.d.ts +2 -0
  185. package/node_modules/@stable-harness/protocols/dist/src/in-process-client.js +1 -0
  186. package/node_modules/@stable-harness/protocols/dist/src/index.d.ts +4 -0
  187. package/node_modules/@stable-harness/protocols/dist/src/index.js +1 -0
  188. package/node_modules/@stable-harness/protocols/dist/src/openai-compatible.d.ts +9 -0
  189. package/node_modules/@stable-harness/protocols/dist/src/openai-compatible.js +1 -0
  190. package/node_modules/@stable-harness/protocols/dist/src/openai-payload.d.ts +74 -0
  191. package/node_modules/@stable-harness/protocols/dist/src/openai-payload.js +1 -0
  192. package/node_modules/@stable-harness/protocols/dist/src/openai-stream.d.ts +39 -0
  193. package/node_modules/@stable-harness/protocols/dist/src/openai-stream.js +1 -0
  194. package/node_modules/@stable-harness/protocols/package.json +15 -0
  195. package/node_modules/@stable-harness/tool-gateway/dist/src/argument-guard.d.ts +33 -0
  196. package/node_modules/@stable-harness/tool-gateway/dist/src/argument-guard.js +1 -0
  197. package/node_modules/@stable-harness/tool-gateway/dist/src/in-memory.d.ts +4 -0
  198. package/node_modules/@stable-harness/tool-gateway/dist/src/in-memory.js +1 -0
  199. package/node_modules/@stable-harness/tool-gateway/dist/src/index.d.ts +7 -0
  200. package/node_modules/@stable-harness/tool-gateway/dist/src/index.js +1 -0
  201. package/node_modules/@stable-harness/tool-gateway/dist/src/module-loader.d.ts +13 -0
  202. package/node_modules/@stable-harness/tool-gateway/dist/src/module-loader.js +1 -0
  203. package/node_modules/@stable-harness/tool-gateway/dist/src/schema-validation.d.ts +3 -0
  204. package/node_modules/@stable-harness/tool-gateway/dist/src/schema-validation.js +1 -0
  205. package/node_modules/@stable-harness/tool-gateway/dist/src/types.d.ts +79 -0
  206. package/node_modules/@stable-harness/tool-gateway/dist/src/types.js +1 -0
  207. package/node_modules/@stable-harness/tool-gateway/package.json +15 -0
  208. package/node_modules/@stable-harness/workspace-yaml/dist/boundary-scan.d.ts +3 -0
  209. package/node_modules/@stable-harness/workspace-yaml/dist/boundary-scan.js +1 -0
  210. package/node_modules/@stable-harness/workspace-yaml/dist/discovery.d.ts +4 -0
  211. package/node_modules/@stable-harness/workspace-yaml/dist/discovery.js +1 -0
  212. package/node_modules/@stable-harness/workspace-yaml/dist/documents.d.ts +16 -0
  213. package/node_modules/@stable-harness/workspace-yaml/dist/documents.js +1 -0
  214. package/node_modules/@stable-harness/workspace-yaml/dist/evaluations.d.ts +9 -0
  215. package/node_modules/@stable-harness/workspace-yaml/dist/evaluations.js +1 -0
  216. package/node_modules/@stable-harness/workspace-yaml/dist/index.d.ts +1 -0
  217. package/node_modules/@stable-harness/workspace-yaml/dist/index.js +1 -0
  218. package/node_modules/@stable-harness/workspace-yaml/dist/loader.d.ts +2 -0
  219. package/node_modules/@stable-harness/workspace-yaml/dist/loader.js +1 -0
  220. package/node_modules/@stable-harness/workspace-yaml/dist/workflows.d.ts +16 -0
  221. package/node_modules/@stable-harness/workspace-yaml/dist/workflows.js +1 -0
  222. package/node_modules/@stable-harness/workspace-yaml/package.json +16 -0
  223. package/package.json +32 -10
  224. package/packages/adapter-deepagents/package.json +4 -6
  225. package/packages/adapter-langgraph/package.json +1 -1
  226. package/packages/cli/package.json +1 -1
  227. package/packages/core/package.json +1 -1
  228. package/packages/evaluation/package.json +1 -1
  229. package/packages/protocols/package.json +1 -1
  230. package/packages/tool-gateway/package.json +1 -1
  231. package/packages/workspace-yaml/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ import type { WorkspaceAgent, WorkspaceEvaluation, WorkspaceTool, WorkspaceWorkflow } from "@stable-harness/core";
2
+ import type { RawDocument } from "./documents.js";
3
+ export declare function compileEvaluation(document: RawDocument, sourcePath: string): WorkspaceEvaluation;
4
+ export declare function validateEvaluations(input: {
5
+ evaluations: Map<string, WorkspaceEvaluation>;
6
+ agents: Map<string, WorkspaceAgent>;
7
+ tools: Map<string, WorkspaceTool>;
8
+ workflows: Map<string, WorkspaceWorkflow>;
9
+ }): void;
@@ -0,0 +1 @@
1
+ export function compileEvaluation(r,t){const e=assertRecord(r.spec,"Evaluation.spec"),o=function readName(r){const t=r.metadata?.name;if("string"==typeof t&&t.trim())return t.trim();throw new Error("Evaluation document requires metadata.name")}(r);return{id:o,...readDescription(r)?{description:readDescription(r)}:{},sourcePath:t,...readString(e.suite)?{suite:readString(e.suite)}:{},cases:readCases(e.cases,o),..."object"==typeof e.config&&e.config?{config:e.config}:{}}}export function validateEvaluations(r){for(const t of r.evaluations.values())for(const e of t.cases){if(e.agentId&&!r.agents.has(e.agentId))throw new Error(`Evaluation ${t.id} case ${e.id} references unknown agent ${e.agentId}`);if(e.workflowId&&!r.workflows.has(e.workflowId))throw new Error(`Evaluation ${t.id} case ${e.id} references unknown workflow ${e.workflowId}`);for(const o of e.tools??[])if(!r.tools.has(o))throw new Error(`Evaluation ${t.id} case ${e.id} references unknown tool ${o}`)}}function readCases(r,t){if(!Array.isArray(r)||0===r.length)throw new Error(`Evaluation ${t} spec.cases must be a non-empty array`);return r.map(r=>{const e=assertRecord(r,`Evaluation ${t} spec.cases[]`),o=readString(e.id);if(!o)throw new Error(`Evaluation ${t} spec.cases[] requires id`);return{id:o,...readString(e.description)?{description:readString(e.description)}:{},...readString(e.agentId)?{agentId:readString(e.agentId)}:{},...readString(e.workflowId)?{workflowId:readString(e.workflowId)}:{},...void 0!==e.input?{input:e.input}:{},...Array.isArray(e.tools)?{tools:e.tools.filter(r=>"string"==typeof r&&r.trim().length>0)}:{},..."object"==typeof e.assertions&&e.assertions?{assertions:e.assertions}:{},..."object"==typeof e.metadata&&e.metadata?{metadata:e.metadata}:{}}})}function assertRecord(r,t){if("object"!=typeof r||null===r||Array.isArray(r))throw new Error(`${t} must be an object`);return r}function readDescription(r){return readString(r.metadata?.description)}function readString(r){return"string"==typeof r&&r.trim()?r.trim():void 0}
@@ -0,0 +1 @@
1
+ export * from "./loader.js";
@@ -0,0 +1 @@
1
+ export*from"./loader.js";
@@ -0,0 +1,2 @@
1
+ import type { CompiledWorkspace } from "@stable-harness/core";
2
+ export declare function loadWorkspaceFromYaml(workspaceRoot: string): Promise<CompiledWorkspace>;
@@ -0,0 +1 @@
1
+ import{readFile as o}from"node:fs/promises";import e from"node:path";import{parseAllDocuments as s}from"yaml";import{discoverModuleTools as t,discoverSkills as r,listYamlFiles as a}from"./discovery.js";import{compileAgent as n,compileMemory as l,compileModel as i,compileModelSpec as c,compileRuntime as f,compileTool as u}from"./documents.js";import{compileWorkflow as m,validateWorkflows as w}from"./workflows.js";import{compileEvaluation as d,validateEvaluations as p}from"./evaluations.js";import{assertWorkspaceBoundaryDiagnostics as k,scanWorkspaceBoundaries as g}from"./boundary-scan.js";import{assertWorkspaceToolQualityDiagnostics as v,scanWorkspaceToolQuality as y}from"@stable-harness/core";export async function loadWorkspaceFromYaml(n){const l=e.join(n,"config"),i=await a(l),c=[],f=new Map,u=new Map,m=new Map,d=new Map,M=new Map,W=new Map,h=new Map;for(const e of i){const t=await o(e,"utf8"),r=s(t).map(o=>o.toJSON()).filter(o=>null!==o);for(const o of r)collectWorkspaceDocument(o,e,{runtimeDocs:c,agents:f,models:u,tools:m,memories:M,workflows:W,evaluations:h})}for(const o of await t(n))m.has(o.id)||m.set(o.id,o);for(const o of await r(n))d.set(o.id,o);const R=c.at(-1)??{defaultAgentId:"orchestra"};w({workflows:W,agents:f,tools:m,skills:d}),p({evaluations:h,agents:f,tools:m,workflows:W}),function validateAgentRouting(o,e){for(const s of o.routes??[])if(!e.has(s.agentId))throw new Error(`Runtime routing route ${s.id} references unknown agent ${s.agentId}`)}(R,f),function validateWorkflowRouting(o,e){const s=o.workflowRouting;if(s){if(s.defaultWorkflowId&&!e.has(s.defaultWorkflowId))throw new Error(`Runtime workflowRouting.defaultWorkflowId references unknown workflow ${s.defaultWorkflowId}`);for(const o of s.routes??[])if(!e.has(o.workflowId))throw new Error(`Runtime workflowRouting route ${o.id} references unknown workflow ${o.workflowId}`)}}(R,W);const A={root:n,runtime:R,agents:f,models:u,tools:m,skills:d,memories:M,workflows:W,evaluations:h},I=g(A);k(I);const O=y(A,R.workspaceValidation?.toolQuality);return v(O),{...A,...[...I??[],...O].length>0?{diagnostics:[...I,...O]}:{}}}function collectWorkspaceDocument(o,e,s){if("string"==typeof o.kind)switch(o.kind){case"Runtime":return void s.runtimeDocs.push(f(o));case"Agent":return collectOne(s.agents,n(o,e));case"Model":return collectOne(s.models,i(o));case"Models":return function collectModelSpecs(o,e){if(Array.isArray(o.spec))for(const s of o.spec)if("object"==typeof s&&null!==s&&!Array.isArray(s)){const o=c(s);e.set(o.id,o)}}(o,s.models);case"Tool":return collectOne(s.tools,u(o,e));case"Memory":return collectOne(s.memories,l(o));case"Workflow":return collectOne(s.workflows,m(o,e));case"Evaluation":return collectOne(s.evaluations,d(o,e));default:return}}function collectOne(o,e){o.set(e.id,e)}
@@ -0,0 +1,16 @@
1
+ import type { WorkspaceAgent, WorkspaceSkill, WorkspaceTool, WorkspaceWorkflow } from "@stable-harness/core";
2
+ type RawDocument = {
3
+ metadata?: {
4
+ name?: unknown;
5
+ description?: unknown;
6
+ };
7
+ spec?: unknown;
8
+ };
9
+ export declare function compileWorkflow(document: RawDocument, sourcePath: string): WorkspaceWorkflow;
10
+ export declare function validateWorkflows(input: {
11
+ workflows: Map<string, WorkspaceWorkflow>;
12
+ agents: Map<string, WorkspaceAgent>;
13
+ tools: Map<string, WorkspaceTool>;
14
+ skills: Map<string, WorkspaceSkill>;
15
+ }): void;
16
+ export {};
@@ -0,0 +1 @@
1
+ export function compileWorkflow(o,r){const e=assertRecord(o.spec,"Workflow.spec"),t="object"==typeof e.config&&e.config?e.config:{};return{id:readName(o),...readDescription(o)?{description:readDescription(o)}:{},sourcePath:r,...readOptionalString(e.adapter)?{adapter:readOptionalString(e.adapter)}:{},...readOptionalString(e.entry)?{entry:readOptionalString(e.entry)}:{},..."object"==typeof e.state&&e.state?{state:readWorkflowState(e.state)}:{},nodes:readWorkflowNodes(e.nodes),edges:readWorkflowEdges(e.edges),..."object"==typeof e.policies&&e.policies?{policies:e.policies}:{},...Object.keys(t).length>0?{config:t}:{}}}export function validateWorkflows(o){for(const r of o.workflows.values()){const e=new Set(r.nodes.map(o=>o.id));validateWorkflowEntry(r,e),validateWorkflowEdges(r,e);for(const e of r.nodes)validateWorkflowUse(e.use,o)}}function readWorkflowState(o){const r=assertRecord(o,"Workflow.spec.state");return{...readOptionalString(r.schema)?{schema:readOptionalString(r.schema)}:{},..."object"==typeof r.config&&r.config?{config:r.config}:{}}}function readWorkflowNodes(o){if(!Array.isArray(o)||0===o.length)throw new Error("Workflow.spec.nodes must be a non-empty array");return o.map(o=>{const r=assertRecord(o,"Workflow.spec.nodes[]"),e=readOptionalString(r.id),t=readOptionalString(r.use);if(!e||!t)throw new Error("Workflow.spec.nodes[] requires id and use");return{id:e,use:t,...readOptionalString(r.type)?{type:readOptionalString(r.type)}:{},..."object"==typeof r.config&&r.config?{config:r.config}:{}}})}function readWorkflowEdges(o){if(!Array.isArray(o))throw new Error("Workflow.spec.edges must be an array");return o.map(o=>{const r=assertRecord(o,"Workflow.spec.edges[]"),e=readOptionalString(r.from),t=readOptionalString(r.to);if(!e||!t)throw new Error("Workflow.spec.edges[] requires from and to");return{from:e,to:t,...readOptionalString(r.condition)?{condition:readOptionalString(r.condition)}:{}}})}function validateWorkflowEntry(o,r){if(o.entry&&!r.has(o.entry))throw new Error(`Workflow ${o.id} entry references unknown node ${o.entry}`)}function validateWorkflowEdges(o,r){for(const e of o.edges)if(!r.has(e.from)||!r.has(e.to))throw new Error(`Workflow ${o.id} edge references unknown node ${e.from}->${e.to}`)}function validateWorkflowUse(o,r){const e=o.indexOf("."),t=e>0?o.slice(0,e):"",n=e>0?o.slice(e+1):"";if(!t||!n)throw new Error(`Workflow node use must reference inventory as agents.<id>, tools.<id>, skills.<id>, or workflows.<id>: ${o}`);const i="agents"===t?r.agents:"tools"===t?r.tools:"skills"===t?r.skills:"workflows"===t?r.workflows:void 0;if(!i?.has(n))throw new Error(`Workflow node references unknown ${t}.${n}`)}function assertRecord(o,r){if("object"!=typeof o||null===o||Array.isArray(o))throw new Error(`${r} must be an object`);return o}function readName(o){const r=o.metadata?.name;if("string"==typeof r&&r.trim())return r.trim();throw new Error("Workflow document requires metadata.name")}function readDescription(o){const r=o.metadata?.description;return"string"==typeof r&&r.trim()?r.trim():void 0}function readOptionalString(o){return"string"==typeof o&&o.trim()?o.trim():void 0}
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "@stable-harness/workspace-yaml",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "files": [
6
+ "dist/**/*.js",
7
+ "dist/**/*.d.ts",
8
+ "package.json"
9
+ ],
10
+ "exports": {
11
+ ".": "./dist/index.js"
12
+ },
13
+ "peerDependencies": {
14
+ "@stable-harness/core": "0.0.1"
15
+ }
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stable-harness",
3
- "version": "0.0.37",
3
+ "version": "0.0.38",
4
4
  "type": "module",
5
5
  "description": "Stable application runtime and operator control plane for agent workspaces.",
6
6
  "license": "Apache-2.0",
@@ -84,14 +84,14 @@
84
84
  "@langchain/langgraph-api": "^1.2.1",
85
85
  "@langchain/ollama": "^1.2.7",
86
86
  "@langchain/openai": "^1.4.5",
87
- "@stable-harness/adapter-deepagents": "file:packages/adapter-deepagents",
88
- "@stable-harness/adapter-langgraph": "file:packages/adapter-langgraph",
89
- "@stable-harness/core": "file:packages/core",
90
- "@stable-harness/governance": "file:packages/governance",
91
- "@stable-harness/memory": "file:packages/memory",
92
- "@stable-harness/protocols": "file:packages/protocols",
93
- "@stable-harness/tool-gateway": "file:packages/tool-gateway",
94
- "@stable-harness/workspace-yaml": "file:packages/workspace-yaml",
87
+ "@stable-harness/adapter-deepagents": "0.0.1",
88
+ "@stable-harness/adapter-langgraph": "0.0.1",
89
+ "@stable-harness/core": "0.0.1",
90
+ "@stable-harness/governance": "0.0.1",
91
+ "@stable-harness/memory": "0.0.1",
92
+ "@stable-harness/protocols": "0.0.1",
93
+ "@stable-harness/tool-gateway": "0.0.1",
94
+ "@stable-harness/workspace-yaml": "0.0.1",
95
95
  "deepagents": "^1.9.1",
96
96
  "langchain": "^1.3.1",
97
97
  "yaml": "^2.8.2",
@@ -101,5 +101,27 @@
101
101
  "@types/node": "^25.6.2",
102
102
  "terser": "^5.47.1",
103
103
  "typescript": "^5.9.3"
104
- }
104
+ },
105
+ "main": "index.js",
106
+ "directories": {
107
+ "doc": "docs",
108
+ "example": "examples",
109
+ "test": "test"
110
+ },
111
+ "keywords": [],
112
+ "author": "",
113
+ "bugs": {
114
+ "url": "https://github.com/botbotgo/stable-harness/issues"
115
+ },
116
+ "homepage": "https://github.com/botbotgo/stable-harness#readme",
117
+ "bundleDependencies": [
118
+ "@stable-harness/adapter-deepagents",
119
+ "@stable-harness/adapter-langgraph",
120
+ "@stable-harness/core",
121
+ "@stable-harness/governance",
122
+ "@stable-harness/memory",
123
+ "@stable-harness/protocols",
124
+ "@stable-harness/tool-gateway",
125
+ "@stable-harness/workspace-yaml"
126
+ ]
105
127
  }
@@ -9,16 +9,14 @@
9
9
  ],
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
- "dependencies": {
12
+ "peerDependencies": {
13
13
  "@botbotgo/better-call": "^0.1.58",
14
14
  "@langchain/core": "^1.1.43",
15
15
  "@langchain/ollama": "^1.2.7",
16
16
  "@langchain/openai": "^1.4.5",
17
- "langchain": "^1.3.1",
18
- "@stable-harness/core": "0.0.1"
19
- },
20
- "peerDependencies": {
21
- "deepagents": "^1.9.1"
17
+ "@stable-harness/core": "0.0.1",
18
+ "deepagents": "^1.9.1",
19
+ "langchain": "^1.3.1"
22
20
  },
23
21
  "peerDependenciesMeta": {
24
22
  "deepagents": {
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
- "dependencies": {
12
+ "peerDependencies": {
13
13
  "@langchain/langgraph": "^1.3.0",
14
14
  "@stable-harness/core": "0.0.1"
15
15
  }
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "main": "dist/src/index.js",
14
14
  "types": "dist/src/index.d.ts",
15
- "dependencies": {
15
+ "peerDependencies": {
16
16
  "@langchain/langgraph-api": "^1.2.1",
17
17
  "@stable-harness/adapter-deepagents": "0.0.1",
18
18
  "@stable-harness/adapter-langgraph": "0.0.1",
@@ -10,7 +10,7 @@
10
10
  "exports": {
11
11
  ".": "./dist/index.js"
12
12
  },
13
- "dependencies": {
13
+ "peerDependencies": {
14
14
  "@botbotgo/better-call": "^0.1.58",
15
15
  "@stable-harness/governance": "0.0.1",
16
16
  "@stable-harness/memory": "0.0.1"
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
- "dependencies": {
12
+ "peerDependencies": {
13
13
  "@stable-harness/core": "0.0.1"
14
14
  }
15
15
  }
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
- "dependencies": {
12
+ "peerDependencies": {
13
13
  "@stable-harness/core": "0.0.1"
14
14
  }
15
15
  }
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "main": "dist/src/index.js",
11
11
  "types": "dist/src/index.d.ts",
12
- "dependencies": {
12
+ "peerDependencies": {
13
13
  "@botbotgo/better-call": "^0.1.58"
14
14
  }
15
15
  }
@@ -10,7 +10,7 @@
10
10
  "exports": {
11
11
  ".": "./dist/index.js"
12
12
  },
13
- "dependencies": {
13
+ "peerDependencies": {
14
14
  "@stable-harness/core": "0.0.1"
15
15
  }
16
16
  }