@mandible-ai/mandible 0.3.14 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,7 +37,9 @@ export { withStructuredOutput } from './providers/structured-output.js';
37
37
  export { withLLM } from './providers/llm.js';
38
38
  export { withBash } from './providers/bash.js';
39
39
  export { withOpenCode } from './providers/opencode.js';
40
+ export { withOpenHands, OpenHandsError } from './providers/openhands.js';
40
41
  export { assembleContext, withContext } from './providers/context.js';
41
42
  export type { ActionHandler, ClaudeCodeConfig, AgentResult, BedrockConfig, StructuredOutputConfig, LLMConfig, BashProviderConfig, LLMCallFunction, SignalDeposit, OutputMapping, ContextAssemblyConfig, } from './providers/types.js';
42
43
  export type { OpenCodeConfig, OpenCodeResult } from './providers/opencode.js';
44
+ export type { OpenHandsConfig, OpenHandsResult, OpenHandsEvent, OpenHandsErrorCode } from './providers/openhands.js';
43
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,MAAM,EACN,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,aAAa,IAAI,cAAc,EAC/B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,IAAI,EAEJ,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGjG,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG9I,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEtE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,MAAM,EACN,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,aAAa,IAAI,cAAc,EAC/B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,IAAI,EAEJ,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGjG,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG9I,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEtE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/src/index.js CHANGED
@@ -44,5 +44,6 @@ export { withStructuredOutput } from './providers/structured-output.js';
44
44
  export { withLLM } from './providers/llm.js';
45
45
  export { withBash } from './providers/bash.js';
46
46
  export { withOpenCode } from './providers/opencode.js';
47
+ export { withOpenHands, OpenHandsError } from './providers/openhands.js';
47
48
  export { assembleContext, withContext } from './providers/context.js';
48
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAsC/D,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAExC,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,qDAAqD;AACrD,qDAAqD;AACrD,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGvD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEvG,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,kCAAkC;AAClC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG5F,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAsC/D,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAExC,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,qDAAqD;AACrD,qDAAqD;AACrD,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGvD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEvG,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,kCAAkC;AAClC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG5F,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
@@ -10,6 +10,8 @@ export { withQwenCode } from './qwen-code.js';
10
10
  export type { QwenCodeConfig, QwenCodeResult } from './qwen-code.js';
11
11
  export { withOpenCode } from './opencode.js';
12
12
  export type { OpenCodeConfig, OpenCodeResult } from './opencode.js';
13
+ export { withOpenHands, OpenHandsError } from './openhands.js';
14
+ export type { OpenHandsConfig, OpenHandsResult, OpenHandsEvent, OpenHandsErrorCode } from './openhands.js';
13
15
  export { withSkill, loadSkills, loadSkill, parseFrontmatter } from './skill.js';
14
16
  export type { SkillConfig, Skill, SkillMeta } from './skill.js';
15
17
  export { assembleContext, withContext } from './context.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,SAAS,GACV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,SAAS,GACV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAG3G,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
@@ -11,6 +11,8 @@ export { withToolLoop, fileReadTool, fileWriteTool, fileEditTool, bashTool, glob
11
11
  export { withQwenCode } from './qwen-code.js';
12
12
  // OpenCode agent wrapper (provider-agnostic agentic coding)
13
13
  export { withOpenCode } from './opencode.js';
14
+ // OpenHands agent wrapper (sandboxed agentic coding for CI/DevOps)
15
+ export { withOpenHands, OpenHandsError } from './openhands.js';
14
16
  // Skill-based colony provider
15
17
  export { withSkill, loadSkills, loadSkill, parseFrontmatter } from './skill.js';
16
18
  // Context assembly
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,iCAAiC;AACjC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,oDAAoD;AACpD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AASxB,sDAAsD;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhF,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,iCAAiC;AACjC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,oDAAoD;AACpD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AASxB,sDAAsD;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,mEAAmE;AACnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG/D,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhF,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,108 @@
1
+ import type { Signal } from '../core/types.js';
2
+ import type { ActionHandler, OutputMapping } from './types.js';
3
+ export interface OpenHandsConfig<T = Record<string, unknown>> {
4
+ /**
5
+ * OpenHands agent server URL.
6
+ * Default: 'http://localhost:3001'.
7
+ */
8
+ serverUrl?: string;
9
+ /**
10
+ * Git repository URL for the sandbox.
11
+ * Can be a static string or derived from the signal.
12
+ */
13
+ repository?: string | ((signal: Signal<T>) => string);
14
+ /**
15
+ * Build the prompt from the incoming signal.
16
+ * Can be a static string, or a function that receives the signal.
17
+ *
18
+ * For context assembly, capture the environment in a closure:
19
+ * prompt: async (signal) => {
20
+ * const ctx = await assembleContext(signal, env, { includeLineage: true });
21
+ * return `${ctx}\n\nInvestigate this CI failure:\n${signal.payload.logs}`;
22
+ * }
23
+ */
24
+ prompt: string | ((signal: Signal<T>) => string | Promise<string>);
25
+ /**
26
+ * Working directory for the OpenHands sandbox.
27
+ * Can be static or derived from the signal.
28
+ */
29
+ workingDirectory?: string | ((signal: Signal<T>) => string);
30
+ /**
31
+ * Git branch to check out in the sandbox.
32
+ * Can be static or derived from the signal.
33
+ */
34
+ selectedBranch?: string | ((signal: Signal<T>) => string);
35
+ /**
36
+ * System-level instructions for the OpenHands agent.
37
+ * Sent as `conversation_instructions` in the create body.
38
+ */
39
+ conversationInstructions?: string;
40
+ /**
41
+ * Maximum iterations the agent can take. Default: 50.
42
+ */
43
+ maxIterations?: number;
44
+ /**
45
+ * Timeout in ms for the entire conversation. Default: 900_000 (15 min).
46
+ * CI investigation can take a while — reproducing failures, installing deps, running tests.
47
+ */
48
+ timeout?: number;
49
+ /**
50
+ * Event callback for observability.
51
+ * Called with events fetched from the conversation events endpoint.
52
+ * Errors in this callback are caught and do not crash the agent.
53
+ */
54
+ onEvent?: (event: OpenHandsEvent) => void;
55
+ /** Map output to signal deposits. */
56
+ output?: OutputMapping<T>;
57
+ /** Auto-withdraw the triggering signal. Default: true. */
58
+ autoWithdraw?: boolean;
59
+ }
60
+ /** Event from the OpenHands conversation events endpoint. */
61
+ export interface OpenHandsEvent {
62
+ id: number;
63
+ source: 'agent' | 'user' | 'environment';
64
+ action?: string;
65
+ observation?: string;
66
+ message?: string;
67
+ args?: Record<string, unknown>;
68
+ content?: string;
69
+ extras?: Record<string, unknown>;
70
+ timestamp?: string;
71
+ }
72
+ /** Result of an OpenHands agent conversation. */
73
+ export interface OpenHandsResult {
74
+ /** Final status of the conversation. */
75
+ status: 'finished' | 'error' | 'timeout' | 'stopped';
76
+ /** Summary text from the agent's final message. */
77
+ text: string;
78
+ /** Conversation ID for debugging/tracing. */
79
+ conversationId: string;
80
+ /** Wall-clock duration in ms. */
81
+ durationMs: number;
82
+ /** Events received during the conversation. */
83
+ events: OpenHandsEvent[];
84
+ }
85
+ /**
86
+ * Creates an action handler powered by the OpenHands local self-hosted API.
87
+ *
88
+ * OpenHands provides sandboxed terminal access inside Docker containers,
89
+ * which is ideal for CI investigation tasks that need to:
90
+ * - Fetch and parse CI logs
91
+ * - Reproduce build failures in isolation
92
+ * - Install dependencies and run tests
93
+ * - Propose fixes without affecting the host
94
+ *
95
+ * Local API Lifecycle:
96
+ * 1. POST /api/conversations — create conversation
97
+ * 2. POST /api/conversations/{id}/message — send user prompt
98
+ * 3. GET /api/conversations/{id} — poll until STOPPED
99
+ * 4. GET /api/conversations/{id}/events — fetch agent events
100
+ * 5. DELETE /api/conversations/{id} — cleanup
101
+ */
102
+ export declare function withOpenHands<T = Record<string, unknown>>(config: OpenHandsConfig<T>): ActionHandler<T>;
103
+ export type OpenHandsErrorCode = 'CONVERSATION_CREATE_FAILED' | 'MESSAGE_SEND_FAILED' | 'CONNECTION_FAILED' | 'TIMEOUT';
104
+ export declare class OpenHandsError extends Error {
105
+ readonly code: OpenHandsErrorCode;
106
+ constructor(code: OpenHandsErrorCode, message: string);
107
+ }
108
+ //# sourceMappingURL=openhands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openhands.d.ts","sourceRoot":"","sources":["../../../src/providers/openhands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAM9E,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAEtD;;;;;;;;;OASG;IACH,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAE5D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAE1D;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAE1C,qCAAqC;IACrC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE1B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GACzB,aAAa,CAAC,CAAC,CAAC,CA4JlB;AAyMD,MAAM,MAAM,kBAAkB,GAC1B,4BAA4B,GAC5B,qBAAqB,GACrB,mBAAmB,GACnB,SAAS,CAAC;AAEd,qBAAa,cAAe,SAAQ,KAAK;aAErB,IAAI,EAAE,kBAAkB;gBAAxB,IAAI,EAAE,kBAAkB,EACxC,OAAO,EAAE,MAAM;CAKlB"}
@@ -0,0 +1,272 @@
1
+ // PURPOSE: withOpenHands — Sandboxed agentic coding via OpenHands local self-hosted API.
2
+ // PURPOSE: REST client targeting /api/conversations for CI investigation and DevOps tasks.
3
+ // ----------------------------------------------------------
4
+ // Provider factory
5
+ // ----------------------------------------------------------
6
+ /**
7
+ * Creates an action handler powered by the OpenHands local self-hosted API.
8
+ *
9
+ * OpenHands provides sandboxed terminal access inside Docker containers,
10
+ * which is ideal for CI investigation tasks that need to:
11
+ * - Fetch and parse CI logs
12
+ * - Reproduce build failures in isolation
13
+ * - Install dependencies and run tests
14
+ * - Propose fixes without affecting the host
15
+ *
16
+ * Local API Lifecycle:
17
+ * 1. POST /api/conversations — create conversation
18
+ * 2. POST /api/conversations/{id}/message — send user prompt
19
+ * 3. GET /api/conversations/{id} — poll until STOPPED
20
+ * 4. GET /api/conversations/{id}/events — fetch agent events
21
+ * 5. DELETE /api/conversations/{id} — cleanup
22
+ */
23
+ export function withOpenHands(config) {
24
+ const { serverUrl = 'http://localhost:3001', repository, prompt, workingDirectory, selectedBranch, conversationInstructions, maxIterations = 50, timeout = 900_000, onEvent, output, autoWithdraw = true, } = config;
25
+ return async (signal, ctx) => {
26
+ const startTime = Date.now();
27
+ const baseUrl = serverUrl.replace(/\/$/, '');
28
+ const headers = {
29
+ 'Content-Type': 'application/json',
30
+ };
31
+ // Resolve dynamic config fields
32
+ const resolvedPrompt = typeof prompt === 'function'
33
+ ? await prompt(signal)
34
+ : prompt;
35
+ const cwd = typeof workingDirectory === 'function'
36
+ ? workingDirectory(signal)
37
+ : workingDirectory;
38
+ const repo = typeof repository === 'function'
39
+ ? repository(signal)
40
+ : repository;
41
+ const branch = typeof selectedBranch === 'function'
42
+ ? selectedBranch(signal)
43
+ : selectedBranch;
44
+ const events = [];
45
+ let conversationId;
46
+ try {
47
+ // 1. Create conversation
48
+ const createBody = {
49
+ max_iterations: maxIterations,
50
+ };
51
+ if (repo !== undefined)
52
+ createBody.repository = repo;
53
+ if (resolvedPrompt)
54
+ createBody.initial_user_msg = resolvedPrompt;
55
+ if (branch !== undefined)
56
+ createBody.selected_branch = branch;
57
+ if (conversationInstructions !== undefined)
58
+ createBody.conversation_instructions = conversationInstructions;
59
+ const createRes = await fetchWithTimeout(`${baseUrl}/api/conversations`, { method: 'POST', headers, body: JSON.stringify(createBody) }, 30_000);
60
+ if (!createRes.ok) {
61
+ const errorText = await createRes.text().catch(() => 'unknown error');
62
+ throw new OpenHandsError('CONVERSATION_CREATE_FAILED', `Failed to create OpenHands conversation: ${createRes.status} ${truncate(errorText, 500)}`);
63
+ }
64
+ const createData = await createRes.json();
65
+ conversationId = createData.conversation_id;
66
+ if (!conversationId) {
67
+ throw new OpenHandsError('CONVERSATION_CREATE_FAILED', 'OpenHands returned no conversation ID');
68
+ }
69
+ ctx.log(`OpenHands conversation ${conversationId} created`);
70
+ // 2. Send user prompt as message
71
+ const messageRes = await fetchWithTimeout(`${baseUrl}/api/conversations/${conversationId}/message`, {
72
+ method: 'POST',
73
+ headers,
74
+ body: JSON.stringify({ message: resolvedPrompt }),
75
+ }, 30_000);
76
+ if (!messageRes.ok) {
77
+ const errorText = await messageRes.text().catch(() => 'unknown error');
78
+ throw new OpenHandsError('MESSAGE_SEND_FAILED', `Failed to send message to conversation ${conversationId}: ${messageRes.status} ${truncate(errorText, 500)}`);
79
+ }
80
+ ctx.log(`Message sent to conversation ${conversationId}`);
81
+ // 3. Poll for completion
82
+ const finalStatus = await pollForCompletion(baseUrl, conversationId, headers, timeout, onEvent, events, ctx);
83
+ // 4. Fetch events
84
+ await fetchEvents(baseUrl, conversationId, headers, events, onEvent, ctx);
85
+ const durationMs = Date.now() - startTime;
86
+ // Extract result text from events or conversation data
87
+ const resultText = extractResultText(events, finalStatus);
88
+ const openHandsResult = {
89
+ status: finalStatus,
90
+ text: resultText,
91
+ conversationId,
92
+ durationMs,
93
+ events,
94
+ };
95
+ ctx.log(`OpenHands ${finalStatus} in ${durationMs}ms ` +
96
+ `(conversation=${conversationId}, events=${events.length})`);
97
+ // 5. Deposit output signals
98
+ const deposits = resolveOutput(output, openHandsResult, signal);
99
+ for (const deposit of deposits) {
100
+ await ctx.deposit(deposit.type, deposit.payload ?? { ...openHandsResult }, {
101
+ causedBy: [signal.id],
102
+ tags: deposit.tags,
103
+ ttl: deposit.ttl,
104
+ });
105
+ }
106
+ // 6. Auto-withdraw
107
+ if (autoWithdraw) {
108
+ await ctx.withdraw(signal.id);
109
+ }
110
+ }
111
+ finally {
112
+ // Always cleanup the conversation
113
+ if (conversationId) {
114
+ await fetchWithTimeout(`${baseUrl}/api/conversations/${conversationId}`, { method: 'DELETE', headers }, 10_000).catch(() => { });
115
+ }
116
+ }
117
+ };
118
+ }
119
+ // ----------------------------------------------------------
120
+ // Completion polling
121
+ // ----------------------------------------------------------
122
+ /**
123
+ * Poll the conversation status until it reaches a terminal state.
124
+ * The local API uses `status` (RUNNING/STOPPED) and `runtime_status`.
125
+ */
126
+ async function pollForCompletion(baseUrl, conversationId, headers, timeout, onEvent, events, ctx) {
127
+ const deadline = Date.now() + timeout;
128
+ const pollInterval = 3_000;
129
+ let lastStatus = '';
130
+ while (Date.now() < deadline) {
131
+ const res = await fetchWithTimeout(`${baseUrl}/api/conversations/${conversationId}`, { method: 'GET', headers }, 10_000).catch(() => null);
132
+ if (res?.ok) {
133
+ const data = await res.json().catch((err) => {
134
+ ctx.log(`Warning: failed to parse poll response: ${err.message}`, 'warn');
135
+ return {};
136
+ });
137
+ const status = data.status;
138
+ const runtimeStatus = data.runtime_status;
139
+ // Emit synthetic event on status change
140
+ const currentStatus = `${status}:${runtimeStatus}`;
141
+ if (currentStatus !== lastStatus) {
142
+ lastStatus = currentStatus;
143
+ const event = {
144
+ id: events.length + 1,
145
+ source: 'environment',
146
+ observation: 'status_change',
147
+ message: `status=${status} runtime_status=${runtimeStatus}`,
148
+ timestamp: new Date().toISOString(),
149
+ };
150
+ events.push(event);
151
+ if (onEvent) {
152
+ try {
153
+ onEvent(event);
154
+ }
155
+ catch { /* swallow callback errors */ }
156
+ }
157
+ }
158
+ // STOPPED is the terminal state for the local API
159
+ if (status === 'STOPPED') {
160
+ return 'finished';
161
+ }
162
+ }
163
+ await sleep(pollInterval);
164
+ }
165
+ return 'timeout';
166
+ }
167
+ // ----------------------------------------------------------
168
+ // Events fetching
169
+ // ----------------------------------------------------------
170
+ /**
171
+ * Fetch all events from the conversation events endpoint.
172
+ */
173
+ async function fetchEvents(baseUrl, conversationId, headers, events, onEvent, ctx) {
174
+ const res = await fetchWithTimeout(`${baseUrl}/api/conversations/${conversationId}/events`, { method: 'GET', headers }, 30_000).catch(() => null);
175
+ if (!res?.ok) {
176
+ ctx.log(`Warning: failed to fetch events for conversation ${conversationId}`, 'warn');
177
+ return;
178
+ }
179
+ const data = await res.json().catch(() => []);
180
+ for (let i = 0; i < data.length; i++) {
181
+ const raw = data[i];
182
+ const event = {
183
+ id: events.length + 1,
184
+ source: raw.source ?? 'agent',
185
+ action: raw.action,
186
+ observation: raw.observation,
187
+ message: raw.message,
188
+ args: raw.args,
189
+ content: raw.content,
190
+ extras: raw.extras,
191
+ timestamp: raw.timestamp,
192
+ };
193
+ events.push(event);
194
+ if (onEvent) {
195
+ try {
196
+ onEvent(event);
197
+ }
198
+ catch { /* swallow callback errors */ }
199
+ }
200
+ }
201
+ }
202
+ // ----------------------------------------------------------
203
+ // Result text extraction
204
+ // ----------------------------------------------------------
205
+ /**
206
+ * Extract the best result text from the collected events.
207
+ * Falls back to a status-based message.
208
+ */
209
+ function extractResultText(events, status) {
210
+ // Walk events in reverse looking for the last agent message
211
+ for (let i = events.length - 1; i >= 0; i--) {
212
+ const event = events[i];
213
+ if (event.source === 'agent' && event.message) {
214
+ return event.message;
215
+ }
216
+ if (event.source === 'agent' && event.content) {
217
+ return event.content;
218
+ }
219
+ }
220
+ // Fallback
221
+ if (status === 'timeout')
222
+ return 'Agent timed out';
223
+ if (status === 'error')
224
+ return 'Agent encountered an error';
225
+ return '';
226
+ }
227
+ // ----------------------------------------------------------
228
+ // Helpers
229
+ // ----------------------------------------------------------
230
+ /** fetch() with AbortSignal.timeout. */
231
+ async function fetchWithTimeout(url, init, timeoutMs) {
232
+ return fetch(url, {
233
+ ...init,
234
+ signal: AbortSignal.timeout(timeoutMs),
235
+ });
236
+ }
237
+ function sleep(ms) {
238
+ return new Promise(resolve => setTimeout(resolve, ms));
239
+ }
240
+ /** Truncate a string to a max length. */
241
+ function truncate(str, maxLen) {
242
+ if (str.length <= maxLen)
243
+ return str;
244
+ return str.slice(0, maxLen) + '...';
245
+ }
246
+ // ----------------------------------------------------------
247
+ // Output mapping (same 3-pattern as withClaudeCode/withBash)
248
+ // ----------------------------------------------------------
249
+ function resolveOutput(output, result, signal) {
250
+ if (!output) {
251
+ return [{ type: `${signal.type}:completed`, payload: result }];
252
+ }
253
+ if (typeof output === 'function') {
254
+ const mapped = output(result, signal);
255
+ return Array.isArray(mapped) ? mapped : [mapped];
256
+ }
257
+ return [{
258
+ type: output.type,
259
+ payload: result,
260
+ tags: output.tags,
261
+ ttl: output.ttl,
262
+ }];
263
+ }
264
+ export class OpenHandsError extends Error {
265
+ code;
266
+ constructor(code, message) {
267
+ super(message);
268
+ this.code = code;
269
+ this.name = 'OpenHandsError';
270
+ }
271
+ }
272
+ //# sourceMappingURL=openhands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../../src/providers/openhands.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mandible-ai/mandible",
3
- "version": "0.3.14",
3
+ "version": "0.5.0",
4
4
  "description": "Universal stigmergy framework for autonomous agent coordination — like ant colonies using pheromone trails",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",