@wrongstack/core 0.148.0 → 0.155.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.
Files changed (50) hide show
  1. package/dist/{agent-bridge-r9y6gdn4.d.ts → agent-bridge-BbZU5TPN.d.ts} +1 -1
  2. package/dist/{agent-subagent-runner-1GeQE_L0.d.ts → agent-subagent-runner-Bsueu0J2.d.ts} +2 -2
  3. package/dist/{brain-Cp_3GIS2.d.ts → brain-CS_B0vIE.d.ts} +2 -0
  4. package/dist/coordination/index.d.ts +7 -7
  5. package/dist/coordination/index.js +143 -6
  6. package/dist/coordination/index.js.map +1 -1
  7. package/dist/defaults/index.d.ts +13 -13
  8. package/dist/defaults/index.js +223 -65
  9. package/dist/defaults/index.js.map +1 -1
  10. package/dist/execution/index.d.ts +6 -6
  11. package/dist/execution/index.js +143 -6
  12. package/dist/execution/index.js.map +1 -1
  13. package/dist/extension/index.d.ts +2 -2
  14. package/dist/{goal-preamble-CYJLg0wk.d.ts → goal-preamble-CbV8pXLD.d.ts} +3 -3
  15. package/dist/{index-CPweVoFM.d.ts → index-B5wz-GXm.d.ts} +1 -1
  16. package/dist/{index-BZdezm3g.d.ts → index-CI1hRfPt.d.ts} +2 -2
  17. package/dist/index.d.ts +22 -22
  18. package/dist/index.js +233 -70
  19. package/dist/index.js.map +1 -1
  20. package/dist/infrastructure/index.d.ts +3 -3
  21. package/dist/infrastructure/index.js +11 -2
  22. package/dist/infrastructure/index.js.map +1 -1
  23. package/dist/kernel/index.d.ts +3 -3
  24. package/dist/kernel/index.js.map +1 -1
  25. package/dist/{mcp-servers-Bl5LTvQg.d.ts → mcp-servers-CPERR2De.d.ts} +8 -1
  26. package/dist/{multi-agent-coordinator-QWEzJDlm.d.ts → multi-agent-coordinator-BSKSFNhv.d.ts} +1 -1
  27. package/dist/{null-fleet-bus-BUyfqh23.d.ts → null-fleet-bus-CGOez8Le.d.ts} +4 -4
  28. package/dist/observability/index.d.ts +1 -1
  29. package/dist/{parallel-eternal-engine-C75QuhAI.d.ts → parallel-eternal-engine-CYoTKjsz.d.ts} +4 -4
  30. package/dist/{path-resolver-DRjQBkoO.d.ts → path-resolver-DuhlmPil.d.ts} +1 -1
  31. package/dist/{plan-templates-CkKNPU3I.d.ts → plan-templates-DbH7lg-t.d.ts} +2 -2
  32. package/dist/{provider-runner-BNpuIyOL.d.ts → provider-runner-Cocq0O9E.d.ts} +1 -1
  33. package/dist/sdd/index.d.ts +3 -3
  34. package/dist/sdd/index.js +143 -6
  35. package/dist/sdd/index.js.map +1 -1
  36. package/dist/{secret-vault-DoISxaKO.d.ts → secret-vault-BJDY28ev.d.ts} +7 -1
  37. package/dist/{secret-vault-BTcC_T5v.d.ts → secret-vault-w8MbUe2Q.d.ts} +1 -1
  38. package/dist/security/index.d.ts +2 -2
  39. package/dist/security/index.js +59 -22
  40. package/dist/security/index.js.map +1 -1
  41. package/dist/storage/index.d.ts +5 -5
  42. package/dist/storage/index.js +76 -42
  43. package/dist/storage/index.js.map +1 -1
  44. package/dist/types/index.d.ts +11 -11
  45. package/dist/types/index.js +59 -22
  46. package/dist/types/index.js.map +1 -1
  47. package/dist/utils/index.d.ts +65 -1
  48. package/dist/utils/index.js +61 -2
  49. package/dist/utils/index.js.map +1 -1
  50. package/package.json +1 -1
package/dist/sdd/index.js CHANGED
@@ -2987,6 +2987,7 @@ var SubagentBudget = class _SubagentBudget {
2987
2987
  function makeAgentSubagentRunner(opts) {
2988
2988
  const format = opts.formatTaskInput ?? defaultFormatTaskInput;
2989
2989
  return async (task, ctx) => {
2990
+ const taskStartedAt = Date.now();
2990
2991
  const factoryResult = await opts.factory(ctx.config);
2991
2992
  const { agent, events } = factoryResult;
2992
2993
  const detachFleet = opts.fleetBus?.attach(ctx.subagentId, events, task.id);
@@ -3083,7 +3084,7 @@ function makeAgentSubagentRunner(opts) {
3083
3084
  }),
3084
3085
  events.on("provider.text_delta", (e) => {
3085
3086
  ctx.budget.markActivity();
3086
- streamingTextAcc = (streamingTextAcc + e.text).slice(-200);
3087
+ streamingTextAcc = (streamingTextAcc + e.text).slice(-2e3);
3087
3088
  })
3088
3089
  );
3089
3090
  const onParentAbort = () => aborter.abort();
@@ -3091,6 +3092,15 @@ function makeAgentSubagentRunner(opts) {
3091
3092
  let result;
3092
3093
  try {
3093
3094
  result = await agent.run(format(task, ctx.config), { signal: aborter.signal });
3095
+ events.emit("subagent.task_completed", {
3096
+ subagentId: ctx.subagentId,
3097
+ taskId: task.id,
3098
+ status: result.status === "done" ? "success" : "failed",
3099
+ iterations: result.iterations,
3100
+ toolCalls: ctx.budget.usage().toolCalls,
3101
+ durationMs: Date.now() - taskStartedAt,
3102
+ finalText: result.finalText?.trim() || void 0
3103
+ });
3094
3104
  } finally {
3095
3105
  detachFleet?.();
3096
3106
  ctx.signal.removeEventListener("abort", onParentAbort);
@@ -4175,15 +4185,44 @@ Working rules:
4175
4185
  id: "e2e",
4176
4186
  name: "E2E",
4177
4187
  role: "e2e",
4178
- tools: [...TOOLS.build, "fetch"],
4188
+ tools: [
4189
+ ...TOOLS.build,
4190
+ "fetch",
4191
+ "playwright_navigate",
4192
+ "playwright_screenshot",
4193
+ "playwright_click",
4194
+ "playwright_type",
4195
+ "playwright_evaluate",
4196
+ "playwright_select_option",
4197
+ "playwright_hover",
4198
+ "playwright_fill_form",
4199
+ "playwright_wait_for",
4200
+ "playwright_press_key",
4201
+ "playwright_drag"
4202
+ ],
4179
4203
  prompt: `You are the E2E agent. Your job is end-to-end testing: drive the whole
4180
4204
  system the way a user would and verify the full flow works across boundaries.
4181
4205
 
4182
4206
  Scope:
4183
4207
  - Author end-to-end scenarios that exercise real user journeys
4184
4208
  - Drive UI/CLI/API across process and network boundaries
4209
+ - Use Playwright browser tools (navigate, click, type, screenshot, evaluate)
4210
+ to automate web UI flows \u2014 open pages, interact with forms, capture evidence
4185
4211
  - Set up and tear down realistic test state
4186
- - Capture failures with enough detail to reproduce (screenshots, logs)
4212
+ - Capture failures with enough detail to reproduce (screenshots, logs, page HTML)
4213
+
4214
+ Playwright tools available (require the "playwright" MCP server to be enabled):
4215
+ playwright_navigate(url) \u2014 open a page at the given URL
4216
+ playwright_screenshot() \u2014 capture a full-page or viewport screenshot
4217
+ playwright_click(selector) \u2014 click on an element matching a CSS selector
4218
+ playwright_type(selector, text) \u2014 type text into a focused input element
4219
+ playwright_evaluate(script) \u2014 run arbitrary JavaScript in the page context
4220
+ playwright_select_option(selector, value) \u2014 pick a <select> dropdown option
4221
+ playwright_hover(selector) \u2014 hover the mouse over an element
4222
+ playwright_fill_form(fields) \u2014 fill multiple form fields in one call
4223
+ playwright_wait_for(selector) \u2014 block until an element appears on the page
4224
+ playwright_press_key(key) \u2014 press a keyboard key (Enter, Tab, Escape, \u2026)
4225
+ playwright_drag(from, to) \u2014 drag an element from one selector to another
4187
4226
 
4188
4227
  Input format you accept:
4189
4228
  { "task": "scenario | smoke | journey", "flow": "<user journey>", "surface": "ui | cli | api" }
@@ -4197,8 +4236,10 @@ Output: Markdown e2e report:
4197
4236
  Working rules:
4198
4237
  - Test the real flow end to end; don't stub the thing under test
4199
4238
  - Make scenarios deterministic \u2014 control time, randomness, and external state
4200
- - On failure, capture artifacts (logs/screenshots) for reproduction
4201
- - Keep scenarios independent so one failure doesn't cascade`
4239
+ - On failure, capture artifacts (screenshots, page HTML, logs) for reproduction
4240
+ - Keep scenarios independent so one failure doesn't cascade
4241
+ - For browser tests: playwright_navigate first, then interact, then playwright_screenshot as evidence
4242
+ - If playwright tools are unavailable, report it and fall back to API/CLI testing`
4202
4243
  },
4203
4244
  budget: HEAVY_BUDGET,
4204
4245
  capability: {
@@ -4211,10 +4252,106 @@ Working rules:
4211
4252
  "user journey",
4212
4253
  "smoke test",
4213
4254
  "playwright",
4255
+ "browser",
4256
+ "screenshot",
4257
+ "web ui",
4258
+ "headless",
4214
4259
  "cypress",
4215
4260
  "full flow",
4216
4261
  "browser test",
4217
- "acceptance test"
4262
+ "acceptance test",
4263
+ "navigate",
4264
+ "click",
4265
+ "form fill",
4266
+ "dom",
4267
+ "page load"
4268
+ ]
4269
+ }
4270
+ },
4271
+ {
4272
+ config: {
4273
+ id: "browser",
4274
+ name: "Browser",
4275
+ role: "browser",
4276
+ tools: [
4277
+ ...TOOLS.read,
4278
+ "fetch",
4279
+ "playwright_navigate",
4280
+ "playwright_screenshot",
4281
+ "playwright_click",
4282
+ "playwright_type",
4283
+ "playwright_evaluate",
4284
+ "playwright_select_option",
4285
+ "playwright_hover",
4286
+ "playwright_fill_form",
4287
+ "playwright_wait_for",
4288
+ "playwright_press_key",
4289
+ "playwright_drag"
4290
+ ],
4291
+ prompt: `You are the Browser agent. Your job is browser automation: open web pages,
4292
+ interact with them, extract data, capture screenshots, and return structured
4293
+ results. You are a read-focused agent \u2014 you drive the browser, not the filesystem.
4294
+
4295
+ Scope:
4296
+ - Navigate to URLs and wait for pages to load
4297
+ - Take full-page or element screenshots as evidence
4298
+ - Click buttons, fill forms, select options, type text \u2014 full user simulation
4299
+ - Extract page content: text, HTML, element attributes, data tables
4300
+ - Evaluate JavaScript in the page context to extract structured data
4301
+ - Verify visual state (element visibility, text content, attribute values)
4302
+
4303
+ Playwright tools available (require the "playwright" MCP server to be enabled):
4304
+ playwright_navigate(url) \u2014 open a page at the given URL
4305
+ playwright_screenshot() \u2014 capture a full-page or viewport screenshot
4306
+ playwright_click(selector) \u2014 click on an element matching a CSS selector
4307
+ playwright_type(selector, text) \u2014 type text into a focused input element
4308
+ playwright_evaluate(script) \u2014 run arbitrary JavaScript in the page context
4309
+ playwright_select_option(selector, value) \u2014 pick a <select> dropdown option
4310
+ playwright_hover(selector) \u2014 hover the mouse over an element
4311
+ playwright_fill_form(fields) \u2014 fill multiple form fields in one call
4312
+ playwright_wait_for(selector) \u2014 block until an element appears on the page
4313
+ playwright_press_key(key) \u2014 press a keyboard key (Enter, Tab, Escape, \u2026)
4314
+ playwright_drag(from, to) \u2014 drag an element from one selector to another
4315
+
4316
+ Input format you accept:
4317
+ { "task": "navigate | screenshot | extract | interact | verify", "url": "<url>", "steps": ["step1", "step2"] }
4318
+
4319
+ Output: Structured markdown report:
4320
+ - ## Page (URL, title, load status)
4321
+ - ## Actions Taken (step-by-step with timestamps)
4322
+ - ## Results (extracted data, element states, verification results)
4323
+ - ## Screenshots (list attached screenshot references)
4324
+ - ## Errors (any failures with stack traces)
4325
+
4326
+ Working rules:
4327
+ - Always playwright_navigate first before any interaction
4328
+ - Always playwright_wait_for after navigation to ensure the page is ready
4329
+ - playwright_screenshot is your primary evidence \u2014 use it before and after interactions
4330
+ - Use playwright_evaluate for structured data extraction (JSON, text content)
4331
+ - If a selector fails, try alternative selectors before giving up
4332
+ - Report exact CSS selectors used \u2014 they're part of the evidence
4333
+ - If playwright tools are unavailable, report the error immediately \u2014 do not guess`
4334
+ },
4335
+ budget: MEDIUM_BUDGET,
4336
+ capability: {
4337
+ phase: "verify",
4338
+ summary: "Browser automation: opens pages, clicks, types, screenshots, extracts data via Playwright headless Chromium.",
4339
+ keywords: [
4340
+ "browser",
4341
+ "screenshot",
4342
+ "navigate",
4343
+ "web page",
4344
+ "scrape",
4345
+ "crawl",
4346
+ "headless",
4347
+ "chrome",
4348
+ "open url",
4349
+ "capture",
4350
+ "page title",
4351
+ "extract data",
4352
+ "fill form",
4353
+ "click button",
4354
+ "take screenshot"
4218
4355
  ]
4219
4356
  }
4220
4357
  },