opendevbrowser 0.0.23 → 0.0.25

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 (47) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/fingerprint/canary.d.ts.map +1 -1
  3. package/dist/{chunk-2MG7BRPF.js → chunk-7U63PZ4W.js} +9440 -1542
  4. package/dist/chunk-7U63PZ4W.js.map +1 -0
  5. package/dist/{chunk-K2TEHJCV.js → chunk-Z6ENAZUN.js} +2848 -693
  6. package/dist/chunk-Z6ENAZUN.js.map +1 -0
  7. package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
  8. package/dist/cli/daemon-client.d.ts +13 -0
  9. package/dist/cli/daemon-client.d.ts.map +1 -1
  10. package/dist/cli/daemon-commands.d.ts.map +1 -1
  11. package/dist/cli/daemon.d.ts +7 -2
  12. package/dist/cli/daemon.d.ts.map +1 -1
  13. package/dist/cli/help.d.ts.map +1 -1
  14. package/dist/cli/index.js +18 -17
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/remote-manager.d.ts +8 -6
  17. package/dist/cli/remote-manager.d.ts.map +1 -1
  18. package/dist/core/bootstrap.d.ts.map +1 -1
  19. package/dist/index.js +44 -24
  20. package/dist/index.js.map +1 -1
  21. package/dist/inspiredesign/brief-expansion.d.ts +41 -0
  22. package/dist/inspiredesign/brief-expansion.d.ts.map +1 -0
  23. package/dist/inspiredesign/handoff.d.ts +3 -1
  24. package/dist/inspiredesign/handoff.d.ts.map +1 -1
  25. package/dist/opendevbrowser.js +44 -24
  26. package/dist/opendevbrowser.js.map +1 -1
  27. package/dist/providers/inspiredesign-capture-mode.d.ts +3 -0
  28. package/dist/providers/inspiredesign-capture-mode.d.ts.map +1 -0
  29. package/dist/providers/inspiredesign-capture.d.ts +8 -1
  30. package/dist/providers/inspiredesign-capture.d.ts.map +1 -1
  31. package/dist/providers/inspiredesign-contract.d.ts +30 -0
  32. package/dist/providers/inspiredesign-contract.d.ts.map +1 -1
  33. package/dist/providers/renderer.d.ts +2 -1
  34. package/dist/providers/renderer.d.ts.map +1 -1
  35. package/dist/providers/workflows.d.ts +2 -0
  36. package/dist/providers/workflows.d.ts.map +1 -1
  37. package/dist/{providers-6YVHKTOJ.js → providers-CYEJZVXB.js} +2 -2
  38. package/dist/tools/inspiredesign_run.d.ts.map +1 -1
  39. package/extension/manifest.json +1 -1
  40. package/package.json +3 -3
  41. package/skills/opendevbrowser-best-practices/SKILL.md +3 -2
  42. package/skills/opendevbrowser-design-agent/SKILL.md +1 -0
  43. package/skills/opendevbrowser-design-agent/assets/templates/inspiredesign-advanced-brief.v1.json +1370 -0
  44. package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +2 -0
  45. package/dist/chunk-2MG7BRPF.js.map +0 -1
  46. package/dist/chunk-K2TEHJCV.js.map +0 -1
  47. /package/dist/{providers-6YVHKTOJ.js.map → providers-CYEJZVXB.js.map} +0 -0
@@ -0,0 +1,41 @@
1
+ import type { CanvasNavigationModel, CanvasThemeStrategy, CanvasVisualDirectionProfile } from "../canvas/types";
2
+ type InspiredesignBriefFormatRoute = {
3
+ profile: CanvasVisualDirectionProfile;
4
+ themeStrategy: CanvasThemeStrategy;
5
+ navigationModel: CanvasNavigationModel;
6
+ layoutApproach: string;
7
+ };
8
+ export type InspiredesignBriefFormat = {
9
+ id: string;
10
+ label: string;
11
+ bestFor: string[];
12
+ businessFocus: string[];
13
+ keywords: string[];
14
+ archetype: string;
15
+ layoutArchetype: string;
16
+ typographySystem: string;
17
+ surfaceTreatment: string;
18
+ shapeLanguage: string;
19
+ componentGrammar: string;
20
+ motionGrammar: string;
21
+ paletteIntent: string;
22
+ visualDensity: string;
23
+ designVariance: string;
24
+ responsiveCollapseRules: string[];
25
+ guardrails: string[];
26
+ antiPatterns: string[];
27
+ deliverables: string[];
28
+ route: InspiredesignBriefFormatRoute;
29
+ };
30
+ export type InspiredesignBriefExpansion = {
31
+ sourceBrief: string;
32
+ advancedBrief: string;
33
+ templateVersion: string;
34
+ format: InspiredesignBriefFormat;
35
+ };
36
+ export declare const INSPIREDESIGN_BRIEF_TEMPLATE_VERSION: string;
37
+ export declare const normalizeInspiredesignBriefText: (value: string) => string;
38
+ export declare const cloneInspiredesignBriefFormat: (format: InspiredesignBriefFormat) => InspiredesignBriefFormat;
39
+ export declare const expandInspiredesignBrief: (brief: string, preferredFormatId?: string) => InspiredesignBriefExpansion;
40
+ export {};
41
+ //# sourceMappingURL=brief-expansion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brief-expansion.d.ts","sourceRoot":"","sources":["../../src/inspiredesign/brief-expansion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAUzB,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,4BAA4B,CAAC;IACtC,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,qBAAqB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAoCF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,6BAA6B,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,wBAAwB,CAAC;CAClC,CAAC;AAGF,eAAO,MAAM,oCAAoC,QAAyB,CAAC;AAE3E,eAAO,MAAM,+BAA+B,GAAI,OAAO,MAAM,KAAG,MAA2C,CAAC;AAqB5G,eAAO,MAAM,6BAA6B,GACxC,QAAQ,wBAAwB,KAC/B,wBAqBD,CAAC;AAkJH,eAAO,MAAM,wBAAwB,GACnC,OAAO,MAAM,EACb,oBAAoB,MAAM,KACzB,2BASF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export declare const INSPIREDESIGN_HANDOFF_FILES: {
2
2
  readonly designMarkdown: "design.md";
3
+ readonly advancedBrief: "advanced-brief.md";
3
4
  readonly designContract: "design-contract.json";
4
5
  readonly canvasPlanRequest: "canvas-plan.request.json";
5
6
  readonly designAgentHandoff: "design-agent-handoff.json";
@@ -26,8 +27,9 @@ export declare const INSPIREDESIGN_HANDOFF_COMMANDS: {
26
27
  };
27
28
  export declare const INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS: readonly [string, string];
28
29
  export declare const INSPIREDESIGN_HANDOFF_GUIDANCE: {
30
+ readonly reviewAdvancedBrief: "advanced-brief.md is the authoritative prompt route for the selected format, profile defaults, layout posture, motion grammar, and anti-patterns. Read it before touching Canvas or implementation files.";
29
31
  readonly prepareCanvasPlanRequest: "Fill canvasSessionId, leaseId, and documentId in canvas-plan.request.json before running opendevbrowser canvas --command canvas.plan.set --params-file ./canvas-plan.request.json.";
30
- readonly deepCaptureRecommendation: "Rerun inspiredesign with captureMode=deep only when you need richer evidence for visual hierarchy, protected references, or capture-specific debugging.";
32
+ readonly deepCaptureRecommendation: "Any inspiredesign run with reference URLs already uses captureMode=deep. Rerun with the same URLs only when you need refreshed DOM/layout evidence, restored session state, or capture-specific debugging.";
31
33
  };
32
34
  export declare const buildInspiredesignFollowthroughSummary: () => string;
33
35
  export declare const buildInspiredesignNextStep: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/inspiredesign/handoff.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B;;;;;;;;;;CAU9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;CAS/B,CAAC;AAaX,eAAO,MAAM,8BAA8B;;;;CAIjC,CAAC;AAEX,eAAO,MAAM,wCAAwC,2BAG3C,CAAC;AAEX,eAAO,MAAM,8BAA8B;;;CAGjC,CAAC;AAEX,eAAO,MAAM,sCAAsC,QAAO,MAEzD,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,MAE7C,CAAC"}
1
+ {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/inspiredesign/handoff.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B;;;;;;;;;;;CAW9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;CAS/B,CAAC;AAaX,eAAO,MAAM,8BAA8B;;;;CAIjC,CAAC;AAEX,eAAO,MAAM,wCAAwC,2BAG3C,CAAC;AAEX,eAAO,MAAM,8BAA8B;;;;CAIjC,CAAC;AAEX,eAAO,MAAM,sCAAsC,QAAO,MAEzD,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,MAE7C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  AGENT_INBOX_SYSTEM_MARKER,
3
+ DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,
3
4
  DaemonClient,
4
5
  ScriptRunner,
5
6
  buildAnnotateResult,
@@ -22,7 +23,7 @@ import {
22
23
  resolveBundledProviderRuntime,
23
24
  resolveSessionRelayRoute,
24
25
  startDaemon
25
- } from "./chunk-2MG7BRPF.js";
26
+ } from "./chunk-7U63PZ4W.js";
26
27
  import "./chunk-STGGGVYT.js";
27
28
  import "./chunk-3ILXPKSJ.js";
28
29
  import "./chunk-TBUCZX4A.js";
@@ -32,8 +33,9 @@ import {
32
33
  buildBlockerArtifacts,
33
34
  buildMacroResolveSuccessHandoff,
34
35
  classifyBlockerSignal,
35
- createRequestId
36
- } from "./chunk-K2TEHJCV.js";
36
+ createRequestId,
37
+ resolveInspiredesignCaptureMode
38
+ } from "./chunk-Z6ENAZUN.js";
37
39
  import "./chunk-FUSXMW3G.js";
38
40
 
39
41
  // src/cli/remote-manager.ts
@@ -42,8 +44,18 @@ var RemoteManager = class {
42
44
  constructor(client) {
43
45
  this.client = client;
44
46
  }
45
- launch(options) {
46
- return this.client.call("session.launch", options);
47
+ callWithOptionalTimeout(name, params, timeoutMs) {
48
+ if (typeof timeoutMs === "number") {
49
+ return this.client.call(name, params, { timeoutMs });
50
+ }
51
+ return this.client.call(name, params);
52
+ }
53
+ launch(options, timeoutMs) {
54
+ return this.callWithOptionalTimeout(
55
+ "session.launch",
56
+ options,
57
+ timeoutMs
58
+ );
47
59
  }
48
60
  connect(options) {
49
61
  return this.client.call("session.connect", options);
@@ -66,20 +78,20 @@ var RemoteManager = class {
66
78
  status(sessionId) {
67
79
  return this.client.call("session.status", { sessionId });
68
80
  }
69
- cookieImport(sessionId, cookies, strict = true, requestId) {
70
- return this.client.call("session.cookieImport", {
81
+ cookieImport(sessionId, cookies, strict = true, requestId, timeoutMs) {
82
+ return this.callWithOptionalTimeout("session.cookieImport", {
71
83
  sessionId,
72
84
  cookies,
73
85
  strict,
74
86
  requestId
75
- });
87
+ }, timeoutMs);
76
88
  }
77
- cookieList(sessionId, urls, requestId) {
78
- return this.client.call("session.cookieList", {
89
+ cookieList(sessionId, urls, requestId, timeoutMs) {
90
+ return this.callWithOptionalTimeout("session.cookieList", {
79
91
  sessionId,
80
92
  ...urls && urls.length > 0 ? { urls } : {},
81
93
  requestId
82
- });
94
+ }, timeoutMs);
83
95
  }
84
96
  goto(sessionId, url, waitUntil = "load", timeoutMs = 3e4, _sessionOverride, targetId) {
85
97
  return this.client.call("nav.goto", {
@@ -107,14 +119,14 @@ var RemoteManager = class {
107
119
  ...typeof targetId === "string" ? { targetId } : {}
108
120
  });
109
121
  }
110
- snapshot(sessionId, mode, maxChars, cursor, targetId) {
111
- return this.client.call("nav.snapshot", {
122
+ snapshot(sessionId, mode, maxChars, cursor, targetId, timeoutMs) {
123
+ return this.callWithOptionalTimeout("nav.snapshot", {
112
124
  sessionId,
113
125
  mode,
114
126
  maxChars,
115
127
  cursor,
116
128
  ...typeof targetId === "string" ? { targetId } : {}
117
- });
129
+ }, timeoutMs);
118
130
  }
119
131
  click(sessionId, ref, targetId) {
120
132
  return this.client.call("interact.click", {
@@ -237,11 +249,19 @@ var RemoteManager = class {
237
249
  ...typeof targetId === "string" ? { targetId } : {}
238
250
  });
239
251
  }
240
- clonePage(sessionId, targetId) {
241
- return this.client.call("export.clonePage", {
252
+ clonePage(sessionId, targetId, timeoutMs) {
253
+ return this.callWithOptionalTimeout("export.clonePage", {
242
254
  sessionId,
243
255
  ...typeof targetId === "string" ? { targetId } : {}
244
- });
256
+ }, timeoutMs);
257
+ }
258
+ clonePageHtmlWithOptions(sessionId, targetId, options, timeoutMs) {
259
+ return this.callWithOptionalTimeout("export.clonePageHtml", {
260
+ sessionId,
261
+ ...typeof targetId === "string" ? { targetId } : {},
262
+ ...typeof options?.maxNodes === "number" ? { maxNodes: options.maxNodes } : {},
263
+ ...typeof options?.inlineStyles === "boolean" ? { inlineStyles: options.inlineStyles } : {}
264
+ }, timeoutMs);
245
265
  }
246
266
  cloneComponent(sessionId, ref, targetId) {
247
267
  return this.client.call("export.cloneComponent", {
@@ -3168,7 +3188,7 @@ function createResearchRunTool(deps) {
3168
3188
  async execute(args) {
3169
3189
  try {
3170
3190
  const runtime = await resolveProviderRuntime(deps);
3171
- const { runResearchWorkflow } = await import("./providers-6YVHKTOJ.js");
3191
+ const { runResearchWorkflow } = await import("./providers-CYEJZVXB.js");
3172
3192
  const result = await runResearchWorkflow(runtime, {
3173
3193
  topic: args.topic,
3174
3194
  days: args.days,
@@ -3219,7 +3239,7 @@ function createShoppingRunTool(deps) {
3219
3239
  async execute(args) {
3220
3240
  try {
3221
3241
  const runtime = await resolveProviderRuntime(deps);
3222
- const { runShoppingWorkflow } = await import("./providers-6YVHKTOJ.js");
3242
+ const { runShoppingWorkflow } = await import("./providers-CYEJZVXB.js");
3223
3243
  const result = await runShoppingWorkflow(runtime, {
3224
3244
  query: args.query,
3225
3245
  providers: args.providers,
@@ -3288,7 +3308,7 @@ function createProductVideoRunTool(deps) {
3288
3308
  async execute(args) {
3289
3309
  try {
3290
3310
  const runtime = await resolveProviderRuntime(deps);
3291
- const { runProductVideoWorkflow } = await import("./providers-6YVHKTOJ.js");
3311
+ const { runProductVideoWorkflow } = await import("./providers-CYEJZVXB.js");
3292
3312
  const includeScreenshots = args.include_screenshots ?? true;
3293
3313
  const result = await runProductVideoWorkflow(runtime, {
3294
3314
  product_url: args.product_url,
@@ -3327,7 +3347,7 @@ function createInspiredesignRunTool(deps) {
3327
3347
  args: {
3328
3348
  brief: z66.string().min(1).describe("Inspiredesign brief"),
3329
3349
  urls: z66.array(z66.string()).optional().describe("Inspiration URLs to analyze"),
3330
- captureMode: captureModeSchema.optional().describe("Capture mode: off|deep"),
3350
+ captureMode: captureModeSchema.optional().describe("Capture mode: off|deep. Any URLs force deep."),
3331
3351
  includePrototypeGuidance: z66.boolean().optional().describe("Include prototype guidance output"),
3332
3352
  mode: modeSchema3.optional().describe("compact|json|md|context|path"),
3333
3353
  timeoutMs: z66.number().int().positive().optional().describe("Workflow timeout in milliseconds"),
@@ -3340,8 +3360,8 @@ function createInspiredesignRunTool(deps) {
3340
3360
  async execute(args) {
3341
3361
  try {
3342
3362
  const runtime = await resolveProviderRuntime(deps);
3343
- const { runInspiredesignWorkflow } = await import("./providers-6YVHKTOJ.js");
3344
- const captureMode = args.captureMode ?? "off";
3363
+ const { runInspiredesignWorkflow } = await import("./providers-CYEJZVXB.js");
3364
+ const captureMode = resolveInspiredesignCaptureMode(args.captureMode, args.urls);
3345
3365
  const cookieSource = deps.config.get().providers?.cookieSource;
3346
3366
  const result = await runInspiredesignWorkflow(runtime, {
3347
3367
  brief: args.brief,
@@ -3349,7 +3369,7 @@ function createInspiredesignRunTool(deps) {
3349
3369
  captureMode,
3350
3370
  includePrototypeGuidance: args.includePrototypeGuidance,
3351
3371
  mode: args.mode ?? "compact",
3352
- timeoutMs: args.timeoutMs,
3372
+ timeoutMs: args.timeoutMs ?? DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,
3353
3373
  outputDir: args.outputDir,
3354
3374
  ttlHours: args.ttlHours,
3355
3375
  useCookies: args.useCookies,