stable-harness 0.0.132 → 0.0.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-deepagents",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -16,7 +16,7 @@
16
16
  "@langchain/node-vfs": "^0.1.4",
17
17
  "@langchain/ollama": "^1.2.7",
18
18
  "@langchain/openai": "^1.4.5",
19
- "@stable-harness/core": "0.0.132",
19
+ "@stable-harness/core": "0.0.133",
20
20
  "deepagents": "^1.10.1",
21
21
  "langchain": "^1.4.0"
22
22
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-langgraph",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,6 +12,6 @@
12
12
  "types": "dist/src/index.d.ts",
13
13
  "peerDependencies": {
14
14
  "@langchain/langgraph": "^1.3.0",
15
- "@stable-harness/core": "0.0.132"
15
+ "@stable-harness/core": "0.0.133"
16
16
  }
17
17
  }
@@ -1 +1 @@
1
- import{looksLikeUnexecutedToolIntent as t}from"./evidence/tool-intent.js";export function hasPlanningEvidence(t){return t.some(t=>{const e=readAdapterEvent(t);return!!e&&("plan"===e.traceType||String(e.traceLabel??"").startsWith("plan.")||"write_todos"===e.toolId&&String(e.phase??"").startsWith("agent.tool."))})}export function successfulEvidenceToolIds(t){const e=t.flatMap(t=>{if("runtime.tool.direct.completed"===t.type)return[t.toolId];const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n&&isSuccessfulEvidenceEvent(e)?[n]:[]});return[...new Set(e)]}export function successfulEvidenceOutputs(t){return successfulEvidenceItems(t).map(t=>t.output)}export function successfulEvidenceItems(t){return t.flatMap(t=>{if("runtime.tool.direct.completed"===t.type)return stringifyEvidence(t.output).map(e=>({source:t.toolId,output:e}));const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n?!isSuccessfulEvidenceEvent(e)||isPlanningTool(n)?[]:stringifyEvidence(e.evidenceOutput??e.output).filter(t=>isUsableEvidenceOutput(n,t)).map(t=>({source:n,output:t})):[]})}export function controlBlockers(t){const e=successfulEventIndexesBySource(t);return t.flatMap((n,r)=>{const o=readAdapterEvent(n),s=readControlStatus(o),u=readControlSource(o)??"tool";return s&&isBlockerStatus(s)?isResolvedByLaterCompletion(s)&&completedAfter(e,u,r)||function isResolvedByLaterEvidenceCompletion(t){return"tool_argument_error"===t}(s)&&function successfulEvidenceAfter(t,e){return t.some((t,n)=>n>e&&Boolean(function successfulEvidenceEventSource(t){if("runtime.tool.direct.completed"===t.type)return t.toolId;const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n&&isSuccessfulEvidenceEvent(e)&&!isPlanningTool(n)&&stringifyEvidence(e.evidenceOutput??e.output).some(t=>isUsableEvidenceOutput(n,t))?n:void 0}(t)))}(t,r)||isResolvedByLaterAnyCompletion(s)&&completedAfterAny(e,r)?[]:[`${u}:${s}`]:[]})}export function controlGaps(t){const e=new Set(successfulEvidenceItems(t).map(t=>t.source));return t.flatMap(t=>{const n=readAdapterEvent(t),r=readControlStatus(n),o=readControlSource(n)??"tool";return r&&isGapStatus(r)?e.has(o)&&isResolvedByLaterCompletion(r)?[]:[`${o}:${r}`]:[]})}export function omittedControlGaps(t,e){const n=successfulEventIndexesBySource(t),r=successfulEvidenceItems(t),o=function outputHasUnsupportedEvidenceClaims(t,e,n){const r=function evidenceCorpus(t,e){return[...e.map(t=>t.output),...t.flatMap(t=>"runtime.request.started"===t.type?[t.input??""]:[]),...t.flatMap(t=>"runtime.memory.recall.completed"===t.type?[t.context]:[])].join("\n")}(e,n).toLowerCase();return unsupportedTokens(t,r,/\b[A-Z][A-Z0-9]{1,12}-\d+\b/gu).length>0||unsupportedTokens(t,r,/\b[A-Za-z_$][A-Za-z0-9_$]*[A-Z][A-Za-z0-9_$]*\b/gu).filter(isCodeLikeIdentifier).length>=2}(e,t,r);return t.flatMap((t,s)=>{const u=readAdapterEvent(t),i=readControlStatus(u),c=readControlSource(u)??"tool";return i&&function isOmittedControlStatus(t){return isGapStatus(t)||isBlockerStatus(t)}(i)?isResolvedByLaterCompletion(i)&&completedAfter(n,c,s)||isResolvedByLaterAnyCompletion(i)&&completedAfterAny(n,s)||!o&&outputUsesPriorEvidence(e,c,r)?[]:[`${c}:${i}`]:[]})}function stringifyEvidence(t){return"string"==typeof t?t.trim()?[t]:[]:null==t?[]:[JSON.stringify(t)]}function isPlanningTool(t){return"write_todos"===t||"read_todos"===t}function isUsableEvidenceOutput(e,n){return"task"!==e||!t(n)}function readAdapterEvent(t){if("runtime.adapter.event"===t.type&&isRecord(t.event))return t.event;const e=t;return isRecord(e)&&isToolResultEvent(e)?e:void 0}function isSuccessfulEvidenceEvent(t){const e=readEventStatus(t);return!e||/^(?:completed|success|ok|recorded)$/iu.test(e)}function isBlockerStatus(t){return/^(?:blocked|approval_required|schema_repair_failed|tool_argument_error|invalid_input|task_inventory_blocked)$/iu.test(t)}function isGapStatus(t){return/^(?:dependency_required|plan_required|repeated_tool_call_limit|duplicate_tool_call)$/iu.test(t)}function isResolvedByLaterCompletion(t){return isGapStatus(t)||isBlockerStatus(t)}function isResolvedByLaterAnyCompletion(t){return"task_inventory_blocked"===t}function successfulEventIndexesBySource(t){const e=new Map;return t.forEach((t,n)=>{const r=function successfulEventSource(t){if("runtime.tool.direct.completed"===t.type)return t.toolId;const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n&&isSuccessfulEvidenceEvent(e)?n:void 0}(t);r&&e.set(r,[...e.get(r)??[],n])}),e}function isToolResultEvent(t){return"deepagents.tool_execution.result"===t?.eventType||"agent.tool.result"===t?.phase||"agent.tool.result"===t?.type||"deepagents.tool_execution.result"===t?.type}function completedAfter(t,e,n){return(t.get(e)??[]).some(t=>t>n)}function completedAfterAny(t,e){return[...t.values()].some(t=>t.some(t=>t>e))}export function outputUsesPriorEvidence(t,e,n){const r=t.toLowerCase();return n.filter(t=>t.source===e).some(t=>{const e=t.output.trim();return!!e&&(!!r.includes(e.slice(0,500).toLowerCase())||function matchingEvidenceTokens(t,e){const n=new Set(["status","completed","success","recorded"]);return[...new Set(e.toLowerCase().match(/[a-z0-9][a-z0-9_.-]{1,}/gu)??[])].filter(t=>!n.has(t)).filter(e=>t.includes(e)).length}(r,e)>=2)})}function unsupportedTokens(t,e,n){return[...new Set(t.match(n)??[])].filter(t=>!e.includes(t.toLowerCase()))}function isCodeLikeIdentifier(t){return!(t.length<8)&&(/(?:Service|Controller|Repository|Manager|Client|Resolver|Agent|Tool|Async)$/u.test(t)||/[a-z][A-Z]/u.test(t))}function readOutputStatus(t){if(isRecord(t)&&"string"==typeof t.status)return t.status;if("string"==typeof t){const e=parseJsonRecord(t);return"string"==typeof e?.status?e.status:t.match(/^Status:\s*([A-Za-z0-9_-]+)/imu)?.[1]}}function parseJsonRecord(t){try{const e=JSON.parse(t);return isRecord(e)?e:void 0}catch{return}}function isRecord(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function readString(t){return"string"==typeof t&&t.trim()?t:void 0}function readEventStatus(t){return readString(t?.controlStatus)??readString(t?.status)??readOutputStatus(t?.output)}function readToolSource(t){return readString(t?.toolId)??readString(t?.toolName)??readString(t?.name)}function readControlStatus(t){const e=function readInventoryRepairControlStatus(t){if("inventory.repair"===t?.phase&&"blocked"===t.status)return"task"===readInventoryRepairSource(t)?"task_inventory_blocked":"blocked"}(t);if(e)return e;const n=readEventStatus(t);return n&&isControlStatus(n)?n:findNestedControlStatus(t)}function readControlSource(t){return readToolSource(t)??readInventoryRepairSource(t)??findNestedToolSource(t)}function isControlStatus(t){return isGapStatus(t)||isBlockerStatus(t)}function findNestedControlStatus(t,e=0){if(e>5||null==t)return;if("string"==typeof t)return function readNestedStringStatus(t,e){const n=parseJsonRecord(t);if(n)return findNestedControlStatus(n,e+1);const r=t.match(/^Status:\s*([A-Za-z0-9_-]+)/imu)?.[1];return r&&isControlStatus(r)?r:function readControlToken(t){const e=t.match(/\b(?:blocked|approval_required|schema_repair_failed|tool_argument_error|invalid_input|task_inventory_blocked|dependency_required|plan_required|repeated_tool_call_limit|duplicate_tool_call)\b/iu)?.[0];return e&&isControlStatus(e)?e:void 0}(t)}(t,e);if(Array.isArray(t))return findFirstNested(t,t=>findNestedControlStatus(t,e+1));if(!isRecord(t))return;const n=readString(t.controlStatus)??readString(t.status);if(n&&isControlStatus(n))return n;const r=readOutputStatus(t.output);return r&&isControlStatus(r)?r:findFirstNested(Object.values(t),t=>findNestedControlStatus(t,e+1))}function findNestedToolSource(t,e=0){if(!(e>5||null==t)){if("string"==typeof t)return function readToolSourceFromText(t){const e=t.match(/["'](?:toolId|toolName|name)["']\s*:\s*["']([^"']+)["']/u)?.[1];return readString(e)}(t);if(Array.isArray(t))return findFirstNested(t,t=>findNestedToolSource(t,e+1));if(isRecord(t))return(readString(t.toolId)??readString(t.toolName)??readString(t.name))||findFirstNested(Object.values(t),t=>findNestedToolSource(t,e+1))}}function findFirstNested(t,e){for(const n of t){const t=e(n);if(void 0!==t)return t}}function readInventoryRepairSource(t){const e=isRecord(t?.diagnostic)?t.diagnostic:void 0;return readString(e?.layer)}
1
+ import{looksLikeUnexecutedToolIntent as e}from"./evidence/tool-intent.js";export function hasPlanningEvidence(e){return e.some(e=>{const t=readAdapterEvent(e);return!!t&&("plan"===t.traceType||String(t.traceLabel??"").startsWith("plan.")||"write_todos"===t.toolId&&String(t.phase??"").startsWith("agent.tool."))})}export function successfulEvidenceToolIds(e){const t=e.flatMap(e=>{if("runtime.tool.direct.completed"===e.type)return[e.toolId];const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n&&isSuccessfulEvidenceEvent(t)?[n]:[]});return[...new Set(t)]}export function successfulEvidenceOutputs(e){return successfulEvidenceItems(e).map(e=>e.output)}export function successfulEvidenceItems(e){return e.flatMap(e=>{if("runtime.tool.direct.completed"===e.type)return stringifyEvidence(e.output).map(t=>({source:e.toolId,output:t}));const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n?!isSuccessfulEvidenceEvent(t)||isPlanningTool(n)?[]:stringifyEvidence(t.evidenceOutput??t.output).filter(e=>isUsableEvidenceOutput(n,e)).map(e=>({source:n,output:e})):[]})}export function controlBlockers(e){const t=successfulEventIndexesBySource(e);return e.flatMap((n,o)=>{const r=readAdapterEvent(n),s=readControlStatus(r),u=readControlSource(r)??"tool";return s&&isBlockerStatus(s)?isResolvedByLaterCompletion(s)&&completedAfter(t,u,o)||function isResolvedByLaterEvidenceCompletion(e){return"tool_argument_error"===e}(s)&&function successfulEvidenceAfter(e,t){return e.some((e,n)=>n>t&&Boolean(function successfulEvidenceEventSource(e){if("runtime.tool.direct.completed"===e.type)return e.toolId;const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n&&isSuccessfulEvidenceEvent(t)&&!isPlanningTool(n)&&stringifyEvidence(t.evidenceOutput??t.output).some(e=>isUsableEvidenceOutput(n,e))?n:void 0}(e)))}(e,o)||isResolvedByLaterAnyCompletion(s)&&completedAfterAny(t,o)?[]:[`${u}:${s}`]:[]})}export function controlGaps(e){const t=new Set(successfulEvidenceItems(e).map(e=>e.source));return e.flatMap(e=>{const n=readAdapterEvent(e),o=readControlStatus(n),r=readControlSource(n)??"tool";return o&&isGapStatus(o)?t.has(r)&&isResolvedByLaterCompletion(o)?[]:[`${r}:${o}`]:[]})}export function omittedControlGaps(e,t){const n=successfulEventIndexesBySource(e),o=successfulEvidenceItems(e),r=function outputHasUnsupportedEvidenceClaims(e,t,n){const o=function evidenceCorpus(e,t){return[...t.map(e=>e.output),...e.flatMap(e=>"runtime.request.started"===e.type?[e.input??""]:[]),...e.flatMap(e=>"runtime.memory.recall.completed"===e.type?[e.context]:[])].join("\n")}(t,n).toLowerCase();return unsupportedTokens(e,o,/\b[A-Z][A-Z0-9]{1,12}-\d+\b/gu).length>0||unsupportedTokens(e,o,/\b[A-Za-z_$][A-Za-z0-9_$]*[A-Z][A-Za-z0-9_$]*\b/gu).filter(isCodeLikeIdentifier).length>=2}(t,e,o);return e.flatMap((e,s)=>{const u=readAdapterEvent(e),i=readControlStatus(u),c=readControlSource(u)??"tool";return i&&function isOmittedControlStatus(e){return isGapStatus(e)||isBlockerStatus(e)}(i)?isResolvedByLaterCompletion(i)&&completedAfter(n,c,s)||isResolvedByLaterAnyCompletion(i)&&completedAfterAny(n,s)||!r&&outputUsesPriorEvidence(t,c,o)?[]:[`${c}:${i}`]:[]})}function stringifyEvidence(e){return"string"==typeof e?e.trim()?[e]:[]:null==e?[]:[JSON.stringify(e)]}function isPlanningTool(e){return"write_todos"===e||"read_todos"===e}function isUsableEvidenceOutput(t,n){return"task"!==t||!e(n)}function readAdapterEvent(e){if("runtime.adapter.event"===e.type&&isRecord(e.event))return e.event;const t=e;return isRecord(t)&&isToolResultEvent(t)?t:void 0}function isSuccessfulEvidenceEvent(e){const t=readEventStatus(e);return!t||/^(?:completed|success|ok|recorded)$/iu.test(t)}function isBlockerStatus(e){return/^(?:blocked|approval_required|schema_repair_failed|tool_argument_error|invalid_input|task_inventory_blocked)$/iu.test(e)}function isGapStatus(e){return/^(?:dependency_required|plan_required|repeated_tool_call_limit|duplicate_tool_call)$/iu.test(e)}function isResolvedByLaterCompletion(e){return isGapStatus(e)||isBlockerStatus(e)}function isResolvedByLaterAnyCompletion(e){return"task_inventory_blocked"===e}function successfulEventIndexesBySource(e){const t=new Map;return e.forEach((e,n)=>{const o=function successfulEventSource(e){if("runtime.tool.direct.completed"===e.type)return e.toolId;const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n&&isSuccessfulEvidenceEvent(t)?n:void 0}(e);o&&t.set(o,[...t.get(o)??[],n])}),t}function isToolResultEvent(e){return"deepagents.tool_execution.result"===e?.eventType||"agent.tool.result"===e?.phase||"agent.tool.result"===e?.type||"deepagents.tool_execution.result"===e?.type}function completedAfter(e,t,n){return(e.get(t)??[]).some(e=>e>n)}function completedAfterAny(e,t){return[...e.values()].some(e=>e.some(e=>e>t))}export function outputUsesPriorEvidence(e,t,n){const o=e.toLowerCase();return n.filter(e=>e.source===t).some(e=>{const t=e.output.trim();return!!t&&(!!o.includes(t.slice(0,500).toLowerCase())||function matchingEvidenceTokens(e,t){const n=new Set(["status","completed","success","recorded"]);return[...new Set(t.toLowerCase().match(/[a-z0-9][a-z0-9_.-]{1,}/gu)??[])].filter(e=>!n.has(e)).filter(t=>e.includes(t)).length}(o,t)>=2)})}function unsupportedTokens(e,t,n){return[...new Set(e.match(n)??[])].filter(e=>!t.includes(e.toLowerCase()))}function isCodeLikeIdentifier(e){return!(e.length<8)&&(/(?:Service|Controller|Repository|Manager|Client|Resolver|Agent|Tool|Async)$/u.test(e)||/[a-z][A-Z]/u.test(e))}function readOutputStatus(e){if(isRecord(e)&&"string"==typeof e.status)return e.status;if("string"==typeof e){const t=parseJsonRecord(e);return"string"==typeof t?.status?t.status:e.match(/^Status:\s*([A-Za-z0-9_-]+)/imu)?.[1]}}function parseJsonRecord(e){try{const t=JSON.parse(e);return isRecord(t)?t:void 0}catch{return}}function isRecord(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function readString(e){return"string"==typeof e&&e.trim()?e:void 0}function readEventStatus(e){return readString(e?.controlStatus)??readString(e?.status)??readOutputStatus(e?.output)}function readToolSource(e){return readString(e?.toolId)??readString(e?.toolName)??readString(e?.name)}function readControlStatus(e){const t=function readInventoryRepairControlStatus(e){if("inventory.repair"===e?.phase&&"blocked"===e.status)return"task"===readInventoryRepairSource(e)?"task_inventory_blocked":"blocked"}(e);if(t)return t;const n=readEventStatus(e);return n&&isControlStatus(n)?n:findNestedControlStatus(e)}function readControlSource(e){return readToolSource(e)??readInventoryRepairSource(e)??findNestedToolSource(e)}function isControlStatus(e){return isGapStatus(e)||isBlockerStatus(e)}function findNestedControlStatus(e,t=0){if(t>5||null==e)return;if("string"==typeof e)return function readNestedStringStatus(e,t){const n=parseJsonRecord(e);return n?findNestedControlStatus(n,t+1):findFirstNested(jsonRecordsInText(e),e=>findNestedControlStatus(e,t+1))}(e,t);if(Array.isArray(e))return findFirstNested(e,e=>findNestedControlStatus(e,t+1));if(!isRecord(e))return;const n=readString(e.controlStatus)??readString(e.status);if(n&&isControlStatus(n))return n;const o=readOutputStatus(e.output);return o&&isControlStatus(o)?o:findFirstNested(Object.values(e),e=>findNestedControlStatus(e,t+1))}function findNestedToolSource(e,t=0){if(!(t>5||null==e)){if("string"==typeof e)return function readToolSourceFromText(e){const t=parseJsonRecord(e);return t?findNestedToolSource(t):findFirstNested(jsonRecordsInText(e),e=>findNestedToolSource(e))}(e);if(Array.isArray(e))return findFirstNested(e,e=>findNestedToolSource(e,t+1));if(isRecord(e))return(readString(e.toolId)??readString(e.toolName)??readString(e.name))||findFirstNested(Object.values(e),e=>findNestedToolSource(e,t+1))}}function findFirstNested(e,t){for(const n of e){const e=t(n);if(void 0!==e)return e}}function jsonRecordsInText(e){const t=[];for(let n=0;n<e.length;n+=1){if("{"!==e[n])continue;const o=findJsonObjectEnd(e,n);if(void 0===o)continue;const r=parseJsonRecord(e.slice(n,o+1));r&&(t.push(r),n=o)}return t}function findJsonObjectEnd(e,t){let n=0,o=!1,r=!1;for(let s=t;s<e.length;s+=1){const t=e[s];if(o)r?r=!1:"\\"===t?r=!0:'"'===t&&(o=!1);else if('"'===t)o=!0;else if("{"===t)n+=1;else if("}"===t&&(n-=1,0===n))return s}}function readInventoryRepairSource(e){const t=isRecord(e?.diagnostic)?e.diagnostic:void 0;return readString(t?.layer)}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/core",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,7 +12,7 @@
12
12
  ".": "./dist/index.js"
13
13
  },
14
14
  "peerDependencies": {
15
- "@stable-harness/governance": "0.0.132",
16
- "@stable-harness/memory": "0.0.132"
15
+ "@stable-harness/governance": "0.0.133",
16
+ "@stable-harness/memory": "0.0.133"
17
17
  }
18
18
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/governance",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/memory",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/protocols",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -11,6 +11,6 @@
11
11
  "main": "dist/src/index.js",
12
12
  "types": "dist/src/index.d.ts",
13
13
  "peerDependencies": {
14
- "@stable-harness/core": "0.0.132"
14
+ "@stable-harness/core": "0.0.133"
15
15
  }
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/tool-gateway",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/workspace-yaml",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,6 +12,6 @@
12
12
  ".": "./dist/index.js"
13
13
  },
14
14
  "peerDependencies": {
15
- "@stable-harness/core": "0.0.132"
15
+ "@stable-harness/core": "0.0.133"
16
16
  }
17
17
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stable-harness",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "type": "module",
5
5
  "description": "Stable application runtime and operator control plane for agent workspaces.",
6
6
  "license": "Apache-2.0",
@@ -82,14 +82,14 @@
82
82
  "@langchain/node-vfs": "^0.1.4",
83
83
  "@langchain/ollama": "^1.2.7",
84
84
  "@langchain/openai": "^1.4.5",
85
- "@stable-harness/adapter-deepagents": "0.0.132",
86
- "@stable-harness/adapter-langgraph": "0.0.132",
87
- "@stable-harness/core": "0.0.132",
88
- "@stable-harness/governance": "0.0.132",
89
- "@stable-harness/memory": "0.0.132",
90
- "@stable-harness/protocols": "0.0.132",
91
- "@stable-harness/tool-gateway": "0.0.132",
92
- "@stable-harness/workspace-yaml": "0.0.132",
85
+ "@stable-harness/adapter-deepagents": "0.0.133",
86
+ "@stable-harness/adapter-langgraph": "0.0.133",
87
+ "@stable-harness/core": "0.0.133",
88
+ "@stable-harness/governance": "0.0.133",
89
+ "@stable-harness/memory": "0.0.133",
90
+ "@stable-harness/protocols": "0.0.133",
91
+ "@stable-harness/tool-gateway": "0.0.133",
92
+ "@stable-harness/workspace-yaml": "0.0.133",
93
93
  "deepagents": "^1.10.1",
94
94
  "langchain": "^1.4.0",
95
95
  "yaml": "^2.8.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-deepagents",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -16,7 +16,7 @@
16
16
  "@langchain/node-vfs": "^0.1.4",
17
17
  "@langchain/ollama": "^1.2.7",
18
18
  "@langchain/openai": "^1.4.5",
19
- "@stable-harness/core": "0.0.132",
19
+ "@stable-harness/core": "0.0.133",
20
20
  "deepagents": "^1.10.1",
21
21
  "langchain": "^1.4.0"
22
22
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/adapter-langgraph",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,6 +12,6 @@
12
12
  "types": "dist/src/index.d.ts",
13
13
  "peerDependencies": {
14
14
  "@langchain/langgraph": "^1.3.0",
15
- "@stable-harness/core": "0.0.132"
15
+ "@stable-harness/core": "0.0.133"
16
16
  }
17
17
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/cli",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -15,12 +15,12 @@
15
15
  "types": "dist/src/index.d.ts",
16
16
  "peerDependencies": {
17
17
  "@langchain/langgraph-api": "^1.2.1",
18
- "@stable-harness/adapter-deepagents": "0.0.132",
19
- "@stable-harness/adapter-langgraph": "0.0.132",
20
- "@stable-harness/core": "0.0.132",
21
- "@stable-harness/memory": "0.0.132",
22
- "@stable-harness/protocols": "0.0.132",
23
- "@stable-harness/tool-gateway": "0.0.132",
24
- "@stable-harness/workspace-yaml": "0.0.132"
18
+ "@stable-harness/adapter-deepagents": "0.0.133",
19
+ "@stable-harness/adapter-langgraph": "0.0.133",
20
+ "@stable-harness/core": "0.0.133",
21
+ "@stable-harness/memory": "0.0.133",
22
+ "@stable-harness/protocols": "0.0.133",
23
+ "@stable-harness/tool-gateway": "0.0.133",
24
+ "@stable-harness/workspace-yaml": "0.0.133"
25
25
  }
26
26
  }
@@ -1 +1 @@
1
- import{looksLikeUnexecutedToolIntent as t}from"./evidence/tool-intent.js";export function hasPlanningEvidence(t){return t.some(t=>{const e=readAdapterEvent(t);return!!e&&("plan"===e.traceType||String(e.traceLabel??"").startsWith("plan.")||"write_todos"===e.toolId&&String(e.phase??"").startsWith("agent.tool."))})}export function successfulEvidenceToolIds(t){const e=t.flatMap(t=>{if("runtime.tool.direct.completed"===t.type)return[t.toolId];const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n&&isSuccessfulEvidenceEvent(e)?[n]:[]});return[...new Set(e)]}export function successfulEvidenceOutputs(t){return successfulEvidenceItems(t).map(t=>t.output)}export function successfulEvidenceItems(t){return t.flatMap(t=>{if("runtime.tool.direct.completed"===t.type)return stringifyEvidence(t.output).map(e=>({source:t.toolId,output:e}));const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n?!isSuccessfulEvidenceEvent(e)||isPlanningTool(n)?[]:stringifyEvidence(e.evidenceOutput??e.output).filter(t=>isUsableEvidenceOutput(n,t)).map(t=>({source:n,output:t})):[]})}export function controlBlockers(t){const e=successfulEventIndexesBySource(t);return t.flatMap((n,r)=>{const o=readAdapterEvent(n),s=readControlStatus(o),u=readControlSource(o)??"tool";return s&&isBlockerStatus(s)?isResolvedByLaterCompletion(s)&&completedAfter(e,u,r)||function isResolvedByLaterEvidenceCompletion(t){return"tool_argument_error"===t}(s)&&function successfulEvidenceAfter(t,e){return t.some((t,n)=>n>e&&Boolean(function successfulEvidenceEventSource(t){if("runtime.tool.direct.completed"===t.type)return t.toolId;const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n&&isSuccessfulEvidenceEvent(e)&&!isPlanningTool(n)&&stringifyEvidence(e.evidenceOutput??e.output).some(t=>isUsableEvidenceOutput(n,t))?n:void 0}(t)))}(t,r)||isResolvedByLaterAnyCompletion(s)&&completedAfterAny(e,r)?[]:[`${u}:${s}`]:[]})}export function controlGaps(t){const e=new Set(successfulEvidenceItems(t).map(t=>t.source));return t.flatMap(t=>{const n=readAdapterEvent(t),r=readControlStatus(n),o=readControlSource(n)??"tool";return r&&isGapStatus(r)?e.has(o)&&isResolvedByLaterCompletion(r)?[]:[`${o}:${r}`]:[]})}export function omittedControlGaps(t,e){const n=successfulEventIndexesBySource(t),r=successfulEvidenceItems(t),o=function outputHasUnsupportedEvidenceClaims(t,e,n){const r=function evidenceCorpus(t,e){return[...e.map(t=>t.output),...t.flatMap(t=>"runtime.request.started"===t.type?[t.input??""]:[]),...t.flatMap(t=>"runtime.memory.recall.completed"===t.type?[t.context]:[])].join("\n")}(e,n).toLowerCase();return unsupportedTokens(t,r,/\b[A-Z][A-Z0-9]{1,12}-\d+\b/gu).length>0||unsupportedTokens(t,r,/\b[A-Za-z_$][A-Za-z0-9_$]*[A-Z][A-Za-z0-9_$]*\b/gu).filter(isCodeLikeIdentifier).length>=2}(e,t,r);return t.flatMap((t,s)=>{const u=readAdapterEvent(t),i=readControlStatus(u),c=readControlSource(u)??"tool";return i&&function isOmittedControlStatus(t){return isGapStatus(t)||isBlockerStatus(t)}(i)?isResolvedByLaterCompletion(i)&&completedAfter(n,c,s)||isResolvedByLaterAnyCompletion(i)&&completedAfterAny(n,s)||!o&&outputUsesPriorEvidence(e,c,r)?[]:[`${c}:${i}`]:[]})}function stringifyEvidence(t){return"string"==typeof t?t.trim()?[t]:[]:null==t?[]:[JSON.stringify(t)]}function isPlanningTool(t){return"write_todos"===t||"read_todos"===t}function isUsableEvidenceOutput(e,n){return"task"!==e||!t(n)}function readAdapterEvent(t){if("runtime.adapter.event"===t.type&&isRecord(t.event))return t.event;const e=t;return isRecord(e)&&isToolResultEvent(e)?e:void 0}function isSuccessfulEvidenceEvent(t){const e=readEventStatus(t);return!e||/^(?:completed|success|ok|recorded)$/iu.test(e)}function isBlockerStatus(t){return/^(?:blocked|approval_required|schema_repair_failed|tool_argument_error|invalid_input|task_inventory_blocked)$/iu.test(t)}function isGapStatus(t){return/^(?:dependency_required|plan_required|repeated_tool_call_limit|duplicate_tool_call)$/iu.test(t)}function isResolvedByLaterCompletion(t){return isGapStatus(t)||isBlockerStatus(t)}function isResolvedByLaterAnyCompletion(t){return"task_inventory_blocked"===t}function successfulEventIndexesBySource(t){const e=new Map;return t.forEach((t,n)=>{const r=function successfulEventSource(t){if("runtime.tool.direct.completed"===t.type)return t.toolId;const e=readAdapterEvent(t),n=readToolSource(e);return isToolResultEvent(e)&&n&&isSuccessfulEvidenceEvent(e)?n:void 0}(t);r&&e.set(r,[...e.get(r)??[],n])}),e}function isToolResultEvent(t){return"deepagents.tool_execution.result"===t?.eventType||"agent.tool.result"===t?.phase||"agent.tool.result"===t?.type||"deepagents.tool_execution.result"===t?.type}function completedAfter(t,e,n){return(t.get(e)??[]).some(t=>t>n)}function completedAfterAny(t,e){return[...t.values()].some(t=>t.some(t=>t>e))}export function outputUsesPriorEvidence(t,e,n){const r=t.toLowerCase();return n.filter(t=>t.source===e).some(t=>{const e=t.output.trim();return!!e&&(!!r.includes(e.slice(0,500).toLowerCase())||function matchingEvidenceTokens(t,e){const n=new Set(["status","completed","success","recorded"]);return[...new Set(e.toLowerCase().match(/[a-z0-9][a-z0-9_.-]{1,}/gu)??[])].filter(t=>!n.has(t)).filter(e=>t.includes(e)).length}(r,e)>=2)})}function unsupportedTokens(t,e,n){return[...new Set(t.match(n)??[])].filter(t=>!e.includes(t.toLowerCase()))}function isCodeLikeIdentifier(t){return!(t.length<8)&&(/(?:Service|Controller|Repository|Manager|Client|Resolver|Agent|Tool|Async)$/u.test(t)||/[a-z][A-Z]/u.test(t))}function readOutputStatus(t){if(isRecord(t)&&"string"==typeof t.status)return t.status;if("string"==typeof t){const e=parseJsonRecord(t);return"string"==typeof e?.status?e.status:t.match(/^Status:\s*([A-Za-z0-9_-]+)/imu)?.[1]}}function parseJsonRecord(t){try{const e=JSON.parse(t);return isRecord(e)?e:void 0}catch{return}}function isRecord(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function readString(t){return"string"==typeof t&&t.trim()?t:void 0}function readEventStatus(t){return readString(t?.controlStatus)??readString(t?.status)??readOutputStatus(t?.output)}function readToolSource(t){return readString(t?.toolId)??readString(t?.toolName)??readString(t?.name)}function readControlStatus(t){const e=function readInventoryRepairControlStatus(t){if("inventory.repair"===t?.phase&&"blocked"===t.status)return"task"===readInventoryRepairSource(t)?"task_inventory_blocked":"blocked"}(t);if(e)return e;const n=readEventStatus(t);return n&&isControlStatus(n)?n:findNestedControlStatus(t)}function readControlSource(t){return readToolSource(t)??readInventoryRepairSource(t)??findNestedToolSource(t)}function isControlStatus(t){return isGapStatus(t)||isBlockerStatus(t)}function findNestedControlStatus(t,e=0){if(e>5||null==t)return;if("string"==typeof t)return function readNestedStringStatus(t,e){const n=parseJsonRecord(t);if(n)return findNestedControlStatus(n,e+1);const r=t.match(/^Status:\s*([A-Za-z0-9_-]+)/imu)?.[1];return r&&isControlStatus(r)?r:function readControlToken(t){const e=t.match(/\b(?:blocked|approval_required|schema_repair_failed|tool_argument_error|invalid_input|task_inventory_blocked|dependency_required|plan_required|repeated_tool_call_limit|duplicate_tool_call)\b/iu)?.[0];return e&&isControlStatus(e)?e:void 0}(t)}(t,e);if(Array.isArray(t))return findFirstNested(t,t=>findNestedControlStatus(t,e+1));if(!isRecord(t))return;const n=readString(t.controlStatus)??readString(t.status);if(n&&isControlStatus(n))return n;const r=readOutputStatus(t.output);return r&&isControlStatus(r)?r:findFirstNested(Object.values(t),t=>findNestedControlStatus(t,e+1))}function findNestedToolSource(t,e=0){if(!(e>5||null==t)){if("string"==typeof t)return function readToolSourceFromText(t){const e=t.match(/["'](?:toolId|toolName|name)["']\s*:\s*["']([^"']+)["']/u)?.[1];return readString(e)}(t);if(Array.isArray(t))return findFirstNested(t,t=>findNestedToolSource(t,e+1));if(isRecord(t))return(readString(t.toolId)??readString(t.toolName)??readString(t.name))||findFirstNested(Object.values(t),t=>findNestedToolSource(t,e+1))}}function findFirstNested(t,e){for(const n of t){const t=e(n);if(void 0!==t)return t}}function readInventoryRepairSource(t){const e=isRecord(t?.diagnostic)?t.diagnostic:void 0;return readString(e?.layer)}
1
+ import{looksLikeUnexecutedToolIntent as e}from"./evidence/tool-intent.js";export function hasPlanningEvidence(e){return e.some(e=>{const t=readAdapterEvent(e);return!!t&&("plan"===t.traceType||String(t.traceLabel??"").startsWith("plan.")||"write_todos"===t.toolId&&String(t.phase??"").startsWith("agent.tool."))})}export function successfulEvidenceToolIds(e){const t=e.flatMap(e=>{if("runtime.tool.direct.completed"===e.type)return[e.toolId];const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n&&isSuccessfulEvidenceEvent(t)?[n]:[]});return[...new Set(t)]}export function successfulEvidenceOutputs(e){return successfulEvidenceItems(e).map(e=>e.output)}export function successfulEvidenceItems(e){return e.flatMap(e=>{if("runtime.tool.direct.completed"===e.type)return stringifyEvidence(e.output).map(t=>({source:e.toolId,output:t}));const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n?!isSuccessfulEvidenceEvent(t)||isPlanningTool(n)?[]:stringifyEvidence(t.evidenceOutput??t.output).filter(e=>isUsableEvidenceOutput(n,e)).map(e=>({source:n,output:e})):[]})}export function controlBlockers(e){const t=successfulEventIndexesBySource(e);return e.flatMap((n,o)=>{const r=readAdapterEvent(n),s=readControlStatus(r),u=readControlSource(r)??"tool";return s&&isBlockerStatus(s)?isResolvedByLaterCompletion(s)&&completedAfter(t,u,o)||function isResolvedByLaterEvidenceCompletion(e){return"tool_argument_error"===e}(s)&&function successfulEvidenceAfter(e,t){return e.some((e,n)=>n>t&&Boolean(function successfulEvidenceEventSource(e){if("runtime.tool.direct.completed"===e.type)return e.toolId;const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n&&isSuccessfulEvidenceEvent(t)&&!isPlanningTool(n)&&stringifyEvidence(t.evidenceOutput??t.output).some(e=>isUsableEvidenceOutput(n,e))?n:void 0}(e)))}(e,o)||isResolvedByLaterAnyCompletion(s)&&completedAfterAny(t,o)?[]:[`${u}:${s}`]:[]})}export function controlGaps(e){const t=new Set(successfulEvidenceItems(e).map(e=>e.source));return e.flatMap(e=>{const n=readAdapterEvent(e),o=readControlStatus(n),r=readControlSource(n)??"tool";return o&&isGapStatus(o)?t.has(r)&&isResolvedByLaterCompletion(o)?[]:[`${r}:${o}`]:[]})}export function omittedControlGaps(e,t){const n=successfulEventIndexesBySource(e),o=successfulEvidenceItems(e),r=function outputHasUnsupportedEvidenceClaims(e,t,n){const o=function evidenceCorpus(e,t){return[...t.map(e=>e.output),...e.flatMap(e=>"runtime.request.started"===e.type?[e.input??""]:[]),...e.flatMap(e=>"runtime.memory.recall.completed"===e.type?[e.context]:[])].join("\n")}(t,n).toLowerCase();return unsupportedTokens(e,o,/\b[A-Z][A-Z0-9]{1,12}-\d+\b/gu).length>0||unsupportedTokens(e,o,/\b[A-Za-z_$][A-Za-z0-9_$]*[A-Z][A-Za-z0-9_$]*\b/gu).filter(isCodeLikeIdentifier).length>=2}(t,e,o);return e.flatMap((e,s)=>{const u=readAdapterEvent(e),i=readControlStatus(u),c=readControlSource(u)??"tool";return i&&function isOmittedControlStatus(e){return isGapStatus(e)||isBlockerStatus(e)}(i)?isResolvedByLaterCompletion(i)&&completedAfter(n,c,s)||isResolvedByLaterAnyCompletion(i)&&completedAfterAny(n,s)||!r&&outputUsesPriorEvidence(t,c,o)?[]:[`${c}:${i}`]:[]})}function stringifyEvidence(e){return"string"==typeof e?e.trim()?[e]:[]:null==e?[]:[JSON.stringify(e)]}function isPlanningTool(e){return"write_todos"===e||"read_todos"===e}function isUsableEvidenceOutput(t,n){return"task"!==t||!e(n)}function readAdapterEvent(e){if("runtime.adapter.event"===e.type&&isRecord(e.event))return e.event;const t=e;return isRecord(t)&&isToolResultEvent(t)?t:void 0}function isSuccessfulEvidenceEvent(e){const t=readEventStatus(e);return!t||/^(?:completed|success|ok|recorded)$/iu.test(t)}function isBlockerStatus(e){return/^(?:blocked|approval_required|schema_repair_failed|tool_argument_error|invalid_input|task_inventory_blocked)$/iu.test(e)}function isGapStatus(e){return/^(?:dependency_required|plan_required|repeated_tool_call_limit|duplicate_tool_call)$/iu.test(e)}function isResolvedByLaterCompletion(e){return isGapStatus(e)||isBlockerStatus(e)}function isResolvedByLaterAnyCompletion(e){return"task_inventory_blocked"===e}function successfulEventIndexesBySource(e){const t=new Map;return e.forEach((e,n)=>{const o=function successfulEventSource(e){if("runtime.tool.direct.completed"===e.type)return e.toolId;const t=readAdapterEvent(e),n=readToolSource(t);return isToolResultEvent(t)&&n&&isSuccessfulEvidenceEvent(t)?n:void 0}(e);o&&t.set(o,[...t.get(o)??[],n])}),t}function isToolResultEvent(e){return"deepagents.tool_execution.result"===e?.eventType||"agent.tool.result"===e?.phase||"agent.tool.result"===e?.type||"deepagents.tool_execution.result"===e?.type}function completedAfter(e,t,n){return(e.get(t)??[]).some(e=>e>n)}function completedAfterAny(e,t){return[...e.values()].some(e=>e.some(e=>e>t))}export function outputUsesPriorEvidence(e,t,n){const o=e.toLowerCase();return n.filter(e=>e.source===t).some(e=>{const t=e.output.trim();return!!t&&(!!o.includes(t.slice(0,500).toLowerCase())||function matchingEvidenceTokens(e,t){const n=new Set(["status","completed","success","recorded"]);return[...new Set(t.toLowerCase().match(/[a-z0-9][a-z0-9_.-]{1,}/gu)??[])].filter(e=>!n.has(e)).filter(t=>e.includes(t)).length}(o,t)>=2)})}function unsupportedTokens(e,t,n){return[...new Set(e.match(n)??[])].filter(e=>!t.includes(e.toLowerCase()))}function isCodeLikeIdentifier(e){return!(e.length<8)&&(/(?:Service|Controller|Repository|Manager|Client|Resolver|Agent|Tool|Async)$/u.test(e)||/[a-z][A-Z]/u.test(e))}function readOutputStatus(e){if(isRecord(e)&&"string"==typeof e.status)return e.status;if("string"==typeof e){const t=parseJsonRecord(e);return"string"==typeof t?.status?t.status:e.match(/^Status:\s*([A-Za-z0-9_-]+)/imu)?.[1]}}function parseJsonRecord(e){try{const t=JSON.parse(e);return isRecord(t)?t:void 0}catch{return}}function isRecord(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function readString(e){return"string"==typeof e&&e.trim()?e:void 0}function readEventStatus(e){return readString(e?.controlStatus)??readString(e?.status)??readOutputStatus(e?.output)}function readToolSource(e){return readString(e?.toolId)??readString(e?.toolName)??readString(e?.name)}function readControlStatus(e){const t=function readInventoryRepairControlStatus(e){if("inventory.repair"===e?.phase&&"blocked"===e.status)return"task"===readInventoryRepairSource(e)?"task_inventory_blocked":"blocked"}(e);if(t)return t;const n=readEventStatus(e);return n&&isControlStatus(n)?n:findNestedControlStatus(e)}function readControlSource(e){return readToolSource(e)??readInventoryRepairSource(e)??findNestedToolSource(e)}function isControlStatus(e){return isGapStatus(e)||isBlockerStatus(e)}function findNestedControlStatus(e,t=0){if(t>5||null==e)return;if("string"==typeof e)return function readNestedStringStatus(e,t){const n=parseJsonRecord(e);return n?findNestedControlStatus(n,t+1):findFirstNested(jsonRecordsInText(e),e=>findNestedControlStatus(e,t+1))}(e,t);if(Array.isArray(e))return findFirstNested(e,e=>findNestedControlStatus(e,t+1));if(!isRecord(e))return;const n=readString(e.controlStatus)??readString(e.status);if(n&&isControlStatus(n))return n;const o=readOutputStatus(e.output);return o&&isControlStatus(o)?o:findFirstNested(Object.values(e),e=>findNestedControlStatus(e,t+1))}function findNestedToolSource(e,t=0){if(!(t>5||null==e)){if("string"==typeof e)return function readToolSourceFromText(e){const t=parseJsonRecord(e);return t?findNestedToolSource(t):findFirstNested(jsonRecordsInText(e),e=>findNestedToolSource(e))}(e);if(Array.isArray(e))return findFirstNested(e,e=>findNestedToolSource(e,t+1));if(isRecord(e))return(readString(e.toolId)??readString(e.toolName)??readString(e.name))||findFirstNested(Object.values(e),e=>findNestedToolSource(e,t+1))}}function findFirstNested(e,t){for(const n of e){const e=t(n);if(void 0!==e)return e}}function jsonRecordsInText(e){const t=[];for(let n=0;n<e.length;n+=1){if("{"!==e[n])continue;const o=findJsonObjectEnd(e,n);if(void 0===o)continue;const r=parseJsonRecord(e.slice(n,o+1));r&&(t.push(r),n=o)}return t}function findJsonObjectEnd(e,t){let n=0,o=!1,r=!1;for(let s=t;s<e.length;s+=1){const t=e[s];if(o)r?r=!1:"\\"===t?r=!0:'"'===t&&(o=!1);else if('"'===t)o=!0;else if("{"===t)n+=1;else if("}"===t&&(n-=1,0===n))return s}}function readInventoryRepairSource(e){const t=isRecord(e?.diagnostic)?e.diagnostic:void 0;return readString(t?.layer)}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/core",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,7 +12,7 @@
12
12
  ".": "./dist/index.js"
13
13
  },
14
14
  "peerDependencies": {
15
- "@stable-harness/governance": "0.0.132",
16
- "@stable-harness/memory": "0.0.132"
15
+ "@stable-harness/governance": "0.0.133",
16
+ "@stable-harness/memory": "0.0.133"
17
17
  }
18
18
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/evaluation",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -11,6 +11,6 @@
11
11
  "main": "dist/src/index.js",
12
12
  "types": "dist/src/index.d.ts",
13
13
  "peerDependencies": {
14
- "@stable-harness/core": "0.0.132"
14
+ "@stable-harness/core": "0.0.133"
15
15
  }
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/governance",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/memory",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/protocols",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -11,6 +11,6 @@
11
11
  "main": "dist/src/index.js",
12
12
  "types": "dist/src/index.d.ts",
13
13
  "peerDependencies": {
14
- "@stable-harness/core": "0.0.132"
14
+ "@stable-harness/core": "0.0.133"
15
15
  }
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/tool-gateway",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stable-harness/workspace-yaml",
3
- "version": "0.0.132",
3
+ "version": "0.0.133",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,6 +12,6 @@
12
12
  ".": "./dist/index.js"
13
13
  },
14
14
  "peerDependencies": {
15
- "@stable-harness/core": "0.0.132"
15
+ "@stable-harness/core": "0.0.133"
16
16
  }
17
17
  }