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.
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/adapter.d.ts +9 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/adapter.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/index.d.ts +4 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/index.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-args.d.ts +5 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-args.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-call-repair.d.ts +9 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-call-repair.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-tool-policy.d.ts +39 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/builtin-tool-policy.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-evidence.d.ts +10 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-evidence.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-failure-events.d.ts +2 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway/tool-failure-events.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway-tools.d.ts +33 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/gateway-tools.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/messages.d.ts +9 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/messages.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/raw-tool-call-parser.d.ts +12 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/raw-tool-call-parser.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/skill-file-policy.d.ts +10 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/skill-file-policy.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/stream-events.d.ts +2 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/stream-events.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/tool-repeat-visibility.d.ts +4 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/tool-repeat-visibility.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/trace-projection.d.ts +16 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/internal/trace-projection.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/memory.d.ts +5 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/memory.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/model-providers.d.ts +4 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/model-providers.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/retry-policy.d.ts +2 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/retry-policy.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/types.d.ts +12 -0
- package/node_modules/@stable-harness/adapter-deepagents/dist/src/types.js +1 -0
- package/node_modules/@stable-harness/adapter-deepagents/package.json +26 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/graph.d.ts +3 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/graph.js +1 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/index.d.ts +8 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/index.js +1 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/runtime.d.ts +3 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/runtime.js +1 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/skill-providers.d.ts +29 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/skill-providers.js +1 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/types.d.ts +60 -0
- package/node_modules/@stable-harness/adapter-langgraph/dist/src/types.js +1 -0
- package/node_modules/@stable-harness/adapter-langgraph/package.json +16 -0
- package/node_modules/@stable-harness/core/dist/boundary-scan.d.ts +38 -0
- package/node_modules/@stable-harness/core/dist/boundary-scan.js +1 -0
- package/node_modules/@stable-harness/core/dist/evaluations/index.d.ts +18 -0
- package/node_modules/@stable-harness/core/dist/evaluations/index.js +1 -0
- package/node_modules/@stable-harness/core/dist/execution-contract.d.ts +9 -0
- package/node_modules/@stable-harness/core/dist/execution-contract.js +1 -0
- package/node_modules/@stable-harness/core/dist/index.d.ts +20 -0
- package/node_modules/@stable-harness/core/dist/index.js +1 -0
- package/node_modules/@stable-harness/core/dist/memory-plugins/maintenance.d.ts +42 -0
- package/node_modules/@stable-harness/core/dist/memory-plugins/maintenance.js +1 -0
- package/node_modules/@stable-harness/core/dist/memory-plugins/shared.d.ts +8 -0
- package/node_modules/@stable-harness/core/dist/memory-plugins/shared.js +1 -0
- package/node_modules/@stable-harness/core/dist/memory-plugins.d.ts +25 -0
- package/node_modules/@stable-harness/core/dist/memory-plugins.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/event-evidence.d.ts +11 -0
- package/node_modules/@stable-harness/core/dist/quality/event-evidence.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/execution-review.d.ts +2 -0
- package/node_modules/@stable-harness/core/dist/quality/execution-review.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/index.d.ts +9 -0
- package/node_modules/@stable-harness/core/dist/quality/index.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/llm-review.d.ts +7 -0
- package/node_modules/@stable-harness/core/dist/quality/llm-review.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/planning-review.d.ts +2 -0
- package/node_modules/@stable-harness/core/dist/quality/planning-review.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/profile.d.ts +3 -0
- package/node_modules/@stable-harness/core/dist/quality/profile.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/recovery-policy.d.ts +11 -0
- package/node_modules/@stable-harness/core/dist/quality/recovery-policy.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/runtime.d.ts +13 -0
- package/node_modules/@stable-harness/core/dist/quality/runtime.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis/fields.d.ts +19 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis/fields.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis/language.d.ts +3 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis/language.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis/observed.d.ts +3 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis/observed.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis.d.ts +2 -0
- package/node_modules/@stable-harness/core/dist/quality/synthesis.js +1 -0
- package/node_modules/@stable-harness/core/dist/quality/types.d.ts +52 -0
- package/node_modules/@stable-harness/core/dist/quality/types.js +1 -0
- package/node_modules/@stable-harness/core/dist/recovery/tool-call.d.ts +28 -0
- package/node_modules/@stable-harness/core/dist/recovery/tool-call.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/capabilities.d.ts +47 -0
- package/node_modules/@stable-harness/core/dist/runtime/capabilities.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/completion.d.ts +18 -0
- package/node_modules/@stable-harness/core/dist/runtime/completion.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/direct-tool-call.d.ts +11 -0
- package/node_modules/@stable-harness/core/dist/runtime/direct-tool-call.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/events.d.ts +295 -0
- package/node_modules/@stable-harness/core/dist/runtime/events.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/governance/approval-gate.d.ts +8 -0
- package/node_modules/@stable-harness/core/dist/runtime/governance/approval-gate.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/governance/sandbox.d.ts +9 -0
- package/node_modules/@stable-harness/core/dist/runtime/governance/sandbox.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/inspection/artifacts.d.ts +15 -0
- package/node_modules/@stable-harness/core/dist/runtime/inspection/artifacts.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/inspection/methods.d.ts +11 -0
- package/node_modules/@stable-harness/core/dist/runtime/inspection/methods.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/inspection/replay.d.ts +6 -0
- package/node_modules/@stable-harness/core/dist/runtime/inspection/replay.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/memory.d.ts +29 -0
- package/node_modules/@stable-harness/core/dist/runtime/memory.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/artifacts.d.ts +8 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/artifacts.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/inspection.d.ts +4 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/inspection.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/queue.d.ts +2 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/queue.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/stores.d.ts +3 -0
- package/node_modules/@stable-harness/core/dist/runtime/persistence/stores.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/progress-narration.d.ts +38 -0
- package/node_modules/@stable-harness/core/dist/runtime/progress-narration.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/selection-repair.d.ts +24 -0
- package/node_modules/@stable-harness/core/dist/runtime/selection-repair.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/tool-failure.d.ts +41 -0
- package/node_modules/@stable-harness/core/dist/runtime/tool-failure.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/tool-gateway.d.ts +59 -0
- package/node_modules/@stable-harness/core/dist/runtime/tool-gateway.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime/types.d.ts +191 -0
- package/node_modules/@stable-harness/core/dist/runtime/types.js +1 -0
- package/node_modules/@stable-harness/core/dist/runtime.d.ts +21 -0
- package/node_modules/@stable-harness/core/dist/runtime.js +1 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/config.d.ts +4 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/config.js +1 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/events.d.ts +11 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/events.js +1 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/index.d.ts +4 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/index.js +1 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/lifecycle.d.ts +11 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/lifecycle.js +1 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/types.d.ts +38 -0
- package/node_modules/@stable-harness/core/dist/spec-driven/types.js +1 -0
- package/node_modules/@stable-harness/core/dist/trace.d.ts +15 -0
- package/node_modules/@stable-harness/core/dist/trace.js +1 -0
- package/node_modules/@stable-harness/core/dist/types.d.ts +144 -0
- package/node_modules/@stable-harness/core/dist/types.js +1 -0
- package/node_modules/@stable-harness/core/dist/workflows/index.d.ts +70 -0
- package/node_modules/@stable-harness/core/dist/workflows/index.js +1 -0
- package/node_modules/@stable-harness/core/dist/workflows/runtime.d.ts +12 -0
- package/node_modules/@stable-harness/core/dist/workflows/runtime.js +1 -0
- package/node_modules/@stable-harness/core/dist/workspace/tool-quality.d.ts +22 -0
- package/node_modules/@stable-harness/core/dist/workspace/tool-quality.js +1 -0
- package/node_modules/@stable-harness/core/dist/workspace/types.d.ts +134 -0
- package/node_modules/@stable-harness/core/dist/workspace/types.js +1 -0
- package/node_modules/@stable-harness/core/package.json +18 -0
- package/node_modules/@stable-harness/governance/dist/src/approval-queue.d.ts +2 -0
- package/node_modules/@stable-harness/governance/dist/src/approval-queue.js +1 -0
- package/node_modules/@stable-harness/governance/dist/src/index.d.ts +4 -0
- package/node_modules/@stable-harness/governance/dist/src/index.js +1 -0
- package/node_modules/@stable-harness/governance/dist/src/policy-engine.d.ts +2 -0
- package/node_modules/@stable-harness/governance/dist/src/policy-engine.js +1 -0
- package/node_modules/@stable-harness/governance/dist/src/skill-candidates.d.ts +2 -0
- package/node_modules/@stable-harness/governance/dist/src/skill-candidates.js +1 -0
- package/node_modules/@stable-harness/governance/dist/src/types.d.ts +101 -0
- package/node_modules/@stable-harness/governance/dist/src/types.js +1 -0
- package/node_modules/@stable-harness/governance/package.json +12 -0
- package/node_modules/@stable-harness/memory/dist/src/index.d.ts +9 -0
- package/node_modules/@stable-harness/memory/dist/src/index.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/langmem-service.d.ts +8 -0
- package/node_modules/@stable-harness/memory/dist/src/langmem-service.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/maintenance.d.ts +2 -0
- package/node_modules/@stable-harness/memory/dist/src/maintenance.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/persistence.d.ts +4 -0
- package/node_modules/@stable-harness/memory/dist/src/persistence.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/policy.d.ts +2 -0
- package/node_modules/@stable-harness/memory/dist/src/policy.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/provider.d.ts +50 -0
- package/node_modules/@stable-harness/memory/dist/src/provider.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/store.d.ts +5 -0
- package/node_modules/@stable-harness/memory/dist/src/store.js +1 -0
- package/node_modules/@stable-harness/memory/dist/src/types.d.ts +138 -0
- package/node_modules/@stable-harness/memory/dist/src/types.js +1 -0
- package/node_modules/@stable-harness/memory/package.json +12 -0
- package/node_modules/@stable-harness/protocols/dist/src/http-server.d.ts +3 -0
- package/node_modules/@stable-harness/protocols/dist/src/http-server.js +1 -0
- package/node_modules/@stable-harness/protocols/dist/src/in-process-client.d.ts +2 -0
- package/node_modules/@stable-harness/protocols/dist/src/in-process-client.js +1 -0
- package/node_modules/@stable-harness/protocols/dist/src/index.d.ts +4 -0
- package/node_modules/@stable-harness/protocols/dist/src/index.js +1 -0
- package/node_modules/@stable-harness/protocols/dist/src/openai-compatible.d.ts +9 -0
- package/node_modules/@stable-harness/protocols/dist/src/openai-compatible.js +1 -0
- package/node_modules/@stable-harness/protocols/dist/src/openai-payload.d.ts +74 -0
- package/node_modules/@stable-harness/protocols/dist/src/openai-payload.js +1 -0
- package/node_modules/@stable-harness/protocols/dist/src/openai-stream.d.ts +39 -0
- package/node_modules/@stable-harness/protocols/dist/src/openai-stream.js +1 -0
- package/node_modules/@stable-harness/protocols/package.json +15 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/argument-guard.d.ts +33 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/argument-guard.js +1 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/in-memory.d.ts +4 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/in-memory.js +1 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/index.d.ts +7 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/index.js +1 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/module-loader.d.ts +13 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/module-loader.js +1 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/schema-validation.d.ts +3 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/schema-validation.js +1 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/types.d.ts +79 -0
- package/node_modules/@stable-harness/tool-gateway/dist/src/types.js +1 -0
- package/node_modules/@stable-harness/tool-gateway/package.json +15 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/boundary-scan.d.ts +3 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/boundary-scan.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/discovery.d.ts +4 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/discovery.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/documents.d.ts +16 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/documents.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/evaluations.d.ts +9 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/evaluations.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/index.d.ts +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/index.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/loader.d.ts +2 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/loader.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/workflows.d.ts +16 -0
- package/node_modules/@stable-harness/workspace-yaml/dist/workflows.js +1 -0
- package/node_modules/@stable-harness/workspace-yaml/package.json +16 -0
- package/package.json +32 -10
- package/packages/adapter-deepagents/package.json +4 -6
- package/packages/adapter-langgraph/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/packages/evaluation/package.json +1 -1
- package/packages/protocols/package.json +1 -1
- package/packages/tool-gateway/package.json +1 -1
- 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 @@
|
|
|
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.
|
|
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": "
|
|
88
|
-
"@stable-harness/adapter-langgraph": "
|
|
89
|
-
"@stable-harness/core": "
|
|
90
|
-
"@stable-harness/governance": "
|
|
91
|
-
"@stable-harness/memory": "
|
|
92
|
-
"@stable-harness/protocols": "
|
|
93
|
-
"@stable-harness/tool-gateway": "
|
|
94
|
-
"@stable-harness/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
|
-
"
|
|
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
|
-
"
|
|
18
|
-
"
|
|
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": {
|