@imgly/codesign-mcp 0.6.0-next.20261104145605.ge4efbda → 0.6.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 (34) hide show
  1. package/dist/cli/license.generated.d.ts +1 -1
  2. package/dist/cli/license.generated.js +1 -1
  3. package/dist/cli/license.generated.js.map +1 -1
  4. package/dist/runtime/codesign-shim/codesign-router/release-build.generated.mjs +1 -1
  5. package/node_modules/@imgly/codesign-acp/package.json +2 -2
  6. package/node_modules/@imgly/codesign-agent/package.json +1 -1
  7. package/node_modules/@imgly/codesign-router/dist/release-build.generated.d.ts +1 -1
  8. package/node_modules/@imgly/codesign-router/dist/release-build.generated.d.ts.map +1 -1
  9. package/node_modules/@imgly/codesign-router/dist/release-build.generated.js +1 -1
  10. package/node_modules/@imgly/codesign-router/dist/release-build.generated.js.map +1 -1
  11. package/node_modules/@imgly/codesign-router/package.json +1 -1
  12. package/node_modules/@imgly/codesign-sdk/dist/gateway/asset-generate.js +3 -5
  13. package/node_modules/@imgly/codesign-sdk/dist/internal/index.d.ts +1 -1
  14. package/node_modules/@imgly/codesign-sdk/dist/internal/index.js +1 -1
  15. package/node_modules/@imgly/codesign-sdk/dist/sdk-version.generated.js +1 -1
  16. package/node_modules/@imgly/codesign-sdk/dist/tools/edit.js +3 -4
  17. package/node_modules/@imgly/codesign-sdk/dist/tools/errors.d.ts +1 -3
  18. package/node_modules/@imgly/codesign-sdk/dist/tools/errors.js +0 -10
  19. package/node_modules/@imgly/codesign-sdk/dist/tools/export.js +3 -4
  20. package/node_modules/@imgly/codesign-sdk/dist/tools/preview.js +3 -4
  21. package/node_modules/@imgly/codesign-sdk/package.json +1 -1
  22. package/node_modules/@imgly/codesign-server/dist/catalog/tools/telemetry-wrapper.d.ts.map +1 -1
  23. package/node_modules/@imgly/codesign-server/dist/catalog/tools/telemetry-wrapper.js +5 -6
  24. package/node_modules/@imgly/codesign-server/dist/catalog/tools/telemetry-wrapper.js.map +1 -1
  25. package/node_modules/@imgly/codesign-server/dist/services/flags/release-flags.generated.d.ts +2 -2
  26. package/node_modules/@imgly/codesign-server/dist/services/flags/release-flags.generated.d.ts.map +1 -1
  27. package/node_modules/@imgly/codesign-server/dist/services/flags/release-flags.generated.js +2 -2
  28. package/node_modules/@imgly/codesign-server/dist/services/flags/release-flags.generated.js.map +1 -1
  29. package/node_modules/@imgly/codesign-server/dist/services/telemetry/error-policy.d.ts.map +1 -1
  30. package/node_modules/@imgly/codesign-server/dist/services/telemetry/error-policy.js +0 -1
  31. package/node_modules/@imgly/codesign-server/dist/services/telemetry/error-policy.js.map +1 -1
  32. package/node_modules/@imgly/codesign-server/package.json +3 -3
  33. package/node_modules/@imgly/design-lint/package.json +1 -1
  34. package/package.json +6 -6
@@ -1,2 +1,2 @@
1
- export declare const IMGLY_CESDK_LICENSE = "e40Uidx26w_rhNhLcfTPsb8L_PyYaIabVsasj9rQDzgbgT4zXp1MLTB7r5AZtVNf";
1
+ export declare const IMGLY_CESDK_LICENSE = "Vmqd_mI4I9_0jGiYnBHzj6z2RQIxBjSFNFidq1gaiSmCv-oMSKByOh9wozKGKzl3";
2
2
  //# sourceMappingURL=license.generated.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // AUTO-GENERATED by scripts/generate-license.mjs — do not edit.
2
2
  // IMGLY_CESDK_LICENSE of a publish build, a public trial in a dev build, or empty.
3
- export const IMGLY_CESDK_LICENSE = "e40Uidx26w_rhNhLcfTPsb8L_PyYaIabVsasj9rQDzgbgT4zXp1MLTB7r5AZtVNf";
3
+ export const IMGLY_CESDK_LICENSE = "Vmqd_mI4I9_0jGiYnBHzj6z2RQIxBjSFNFidq1gaiSmCv-oMSKByOh9wozKGKzl3";
4
4
  //# sourceMappingURL=license.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.generated.js","sourceRoot":"","sources":["../../src/cli/license.generated.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,kEAAkE,CAAC","sourcesContent":["// AUTO-GENERATED by scripts/generate-license.mjs — do not edit.\n// IMGLY_CESDK_LICENSE of a publish build, a public trial in a dev build, or empty.\nexport const IMGLY_CESDK_LICENSE = \"e40Uidx26w_rhNhLcfTPsb8L_PyYaIabVsasj9rQDzgbgT4zXp1MLTB7r5AZtVNf\";\n"]}
1
+ {"version":3,"file":"license.generated.js","sourceRoot":"","sources":["../../src/cli/license.generated.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,kEAAkE,CAAC","sourcesContent":["// AUTO-GENERATED by scripts/generate-license.mjs — do not edit.\n// IMGLY_CESDK_LICENSE of a publish build, a public trial in a dev build, or empty.\nexport const IMGLY_CESDK_LICENSE = \"Vmqd_mI4I9_0jGiYnBHzj6z2RQIxBjSFNFidq1gaiSmCv-oMSKByOh9wozKGKzl3\";\n"]}
@@ -1,5 +1,5 @@
1
1
  //#region ../codesign-router/dist/release-build.generated.js
2
- const CHANNEL = "next";
2
+ const CHANNEL = "stable";
3
3
 
4
4
  //#endregion
5
5
  export { CHANNEL };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/codesign-acp",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "private": true,
5
5
  "description": "`cdsn acp`: CoDesign as an ACP agent over stdio, for editors that speak the Agent Client Protocol; each ACP session is a chat of the CoDesign Server.",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -25,7 +25,7 @@
25
25
  "test": "vitest --run"
26
26
  },
27
27
  "dependencies": {
28
- "@imgly/codesign-router": "0.5.1"
28
+ "@imgly/codesign-router": "0.6.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@imgly/codesign-server": "workspace:*",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/codesign-agent",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "private": true,
5
5
  "description": "The `codesign` chat agent: pi-durable with CoDesign's tools and models through the IMG.LY AI gateway, for any host.",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -1,3 +1,3 @@
1
1
  export declare const RELEASE_BUILD = true;
2
- export declare const CHANNEL = "next";
2
+ export declare const CHANNEL = "stable";
3
3
  //# sourceMappingURL=release-build.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-build.generated.d.ts","sourceRoot":"","sources":["../src/release-build.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,eAAO,MAAM,OAAO,SAAS,CAAC"}
1
+ {"version":3,"file":"release-build.generated.d.ts","sourceRoot":"","sources":["../src/release-build.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,eAAO,MAAM,OAAO,WAAW,CAAC"}
@@ -2,5 +2,5 @@
2
2
  // True only when IMGLY_RELEASE_BUILD=true was set at build/publish time.
3
3
  export const RELEASE_BUILD = true;
4
4
  // The channel it is built for: stable | next | canary.
5
- export const CHANNEL = 'next';
5
+ export const CHANNEL = 'stable';
6
6
  //# sourceMappingURL=release-build.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-build.generated.js","sourceRoot":"","sources":["../src/release-build.generated.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,uDAAuD;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC","sourcesContent":["// AUTO-GENERATED by scripts/generate-release-build.mjs — do not edit.\n// True only when IMGLY_RELEASE_BUILD=true was set at build/publish time.\nexport const RELEASE_BUILD = true;\n// The channel it is built for: stable | next | canary.\nexport const CHANNEL = 'next';\n"]}
1
+ {"version":3,"file":"release-build.generated.js","sourceRoot":"","sources":["../src/release-build.generated.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,uDAAuD;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// AUTO-GENERATED by scripts/generate-release-build.mjs — do not edit.\n// True only when IMGLY_RELEASE_BUILD=true was set at build/publish time.\nexport const RELEASE_BUILD = true;\n// The channel it is built for: stable | next | canary.\nexport const CHANNEL = 'stable';\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/codesign-router",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "private": true,
5
5
  "description": "The CoDesign router: the server protocol, the router process, unit lifecycle and the installer. Node built-ins only.",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -4,7 +4,7 @@ import { raceAbort } from '../abort.js';
4
4
  import { CodesignError, isProductFailure } from '../host.js';
5
5
  import { requirePlaceableAsset } from '../assets/placeable.js';
6
6
  import { imageSizeOf } from '../formats/image-size.js';
7
- import { callErrorCode, classifyThrow, fromGatewayCode } from '../tools/errors.js';
7
+ import { classifyThrow, fromGatewayCode } from '../tools/errors.js';
8
8
  import { NOOP_TELEMETRY_SINK, summarizeResult, toErrorShape } from '../tools/spans.js';
9
9
  import { GatewayError } from './types.js';
10
10
  import { GATEWAY_COPY } from './copy.js';
@@ -469,15 +469,13 @@ export function createAssetGenerateTool(opts) {
469
469
  finally {
470
470
  const model = rawArgs
471
471
  ?.model;
472
- const succeeded = threw === undefined && result?.isError !== true;
473
- const code = callErrorCode(signal, threw, errorCode);
474
472
  telemetry.record({
475
473
  tool: 'asset_generate',
476
- succeeded,
474
+ succeeded: threw === undefined && result?.isError !== true,
477
475
  totalMs: performance.now() - startedAt,
478
476
  spans: [],
479
477
  args: rawArgs,
480
- ...(code ? { errorCode: code } : {}),
478
+ ...(errorCode ? { errorCode } : {}),
481
479
  ...(errorDetail ? { errorDetail } : {}),
482
480
  // Gateway model ids contain '/', which the sink's token gate rejects.
483
481
  ...(typeof model === 'string'
@@ -58,7 +58,7 @@ export { createScorecardTool } from '../tools/scorecard.js';
58
58
  export type { CreateScorecardToolOptions } from '../tools/scorecard.js';
59
59
  export { composeSkillFiles, detectSkillDirs, designSection, VIDEO_OFF_NOTE } from '../skill-files.js';
60
60
  export type { ComposeSkillFilesOptions, SkillFiles, SkillSurface } from '../skill-files.js';
61
- export { callErrorCode, classifyThrow, ERROR_DETAIL_TOKEN, isErrorCode } from '../tools/errors.js';
61
+ export { classifyThrow, ERROR_DETAIL_TOKEN, isErrorCode } from '../tools/errors.js';
62
62
  export type { ErrorCode } from '../tools/errors.js';
63
63
  export { NOOP_TELEMETRY_SINK, SpanRecorder, summarizeResult, toErrorShape } from '../tools/spans.js';
64
64
  export type { Span, TelemetrySink, ToolCallReport } from '../tools/spans.js';
@@ -39,7 +39,7 @@ export { withMediaFacts } from '../formats/media-sniff.js';
39
39
  export { createScorecardTool } from '../tools/scorecard.js';
40
40
  export { composeSkillFiles, detectSkillDirs, designSection, VIDEO_OFF_NOTE } from '../skill-files.js';
41
41
  // --- the vocabulary the tools share ----------------------------------------
42
- export { callErrorCode, classifyThrow, ERROR_DETAIL_TOKEN, isErrorCode } from '../tools/errors.js';
42
+ export { classifyThrow, ERROR_DETAIL_TOKEN, isErrorCode } from '../tools/errors.js';
43
43
  export { NOOP_TELEMETRY_SINK, SpanRecorder, summarizeResult, toErrorShape } from '../tools/spans.js';
44
44
  export { callTool, findJsonObject } from '../tools/call.js';
45
45
  export { FORMATS, formatSpec } from '../tools/export-formats/table.js';
@@ -1,4 +1,4 @@
1
1
  // AUTO-GENERATED by scripts/sdk-version.mjs — do not edit.
2
- export const SDK_VERSION = "1.85.0+97e29106e73b";
2
+ export const SDK_VERSION = "1.85.0+46e66a47a043";
3
3
  export const CESDK_VERSION = "1.85.2";
4
4
  //# sourceMappingURL=sdk-version.generated.js.map
@@ -7,7 +7,7 @@ import { formatLintNotice } from '../design/lint.js';
7
7
  import { CAPTION_DIALECT_EQUIVALENTS, DIALECT_EQUIVALENTS, DIALECT_OPT_OUT, NAMESPACE_EQUIVALENTS } from '../design/dialect.js';
8
8
  import { isCodesignError, isProductFailure } from '../host.js';
9
9
  import { failedLoadsText } from './block-loads.js';
10
- import { callErrorCode, classifyThrow } from './errors.js';
10
+ import { classifyThrow } from './errors.js';
11
11
  import { designChangeText } from './design-change.js';
12
12
  import { capTextParts, normalizeResult } from './result.js';
13
13
  import { SpanRecorder, NOOP_TELEMETRY_SINK, summarizeResult, toErrorShape } from './spans.js';
@@ -351,12 +351,11 @@ export function createEditTool(opts) {
351
351
  throw err;
352
352
  }
353
353
  finally {
354
- const succeeded = threw === undefined && result?.isError !== true;
355
- const resolvedCode = callErrorCode(ctx?.signal, threw, errorCode ?? classifyThrow(threw));
354
+ const resolvedCode = errorCode ?? classifyThrow(threw);
356
355
  const skillsToken = skillsTelemetryToken(rawArgs?.skills, KNOWN_SKILLS);
357
356
  telemetry.record({
358
357
  tool: 'edit',
359
- succeeded,
358
+ succeeded: threw === undefined && result?.isError !== true,
360
359
  ...(resolvedCode ? { errorCode: resolvedCode } : {}),
361
360
  ...(errorDetail ? { errorDetail } : {}),
362
361
  ...(designError ? { designError } : {}),
@@ -1,9 +1,7 @@
1
- export declare const ERROR_CODES: readonly ["executor_capacity", "resources_pending", "bad_args", "unknown_revision", "feature_disabled", "engine_unsupported", "internal_error", "design_changed", "design_conflict", "unsaved_changes", "cancelled", "unknown_format", "render_failed", "pdfx_convert_failed", "profile_fetch_failed", "outpath_write_failed", "export_refused", "code_threw", "invalid_return", "dialect_violation", "scene_file_uri", "scene_inline_bytes", "unauthorized", "no_credentials", "insufficient_credits", "model_not_found", "generation_failed", "output_download_failed", "service_error", "gateway_error"];
1
+ export declare const ERROR_CODES: readonly ["executor_capacity", "resources_pending", "bad_args", "unknown_revision", "feature_disabled", "engine_unsupported", "internal_error", "design_changed", "design_conflict", "unsaved_changes", "unknown_format", "render_failed", "pdfx_convert_failed", "profile_fetch_failed", "outpath_write_failed", "export_refused", "code_threw", "invalid_return", "dialect_violation", "scene_file_uri", "scene_inline_bytes", "unauthorized", "no_credentials", "insufficient_credits", "model_not_found", "generation_failed", "output_download_failed", "service_error", "gateway_error"];
2
2
  export type ErrorCode = (typeof ERROR_CODES)[number];
3
3
  /** Runtime guard for the sink — the compile-time type cannot cover a value the gateway sent. */
4
4
  export declare function isErrorCode(value: unknown): value is ErrorCode;
5
- /** `cancelled` for a call that threw its caller's abort; any other failure keeps its own code. */
6
- export declare function callErrorCode(signal: AbortSignal | undefined, threw: unknown, code: ErrorCode | undefined): ErrorCode | undefined;
7
5
  /** Map a thrown error with a machine-readable identity onto a code; never reads its message. */
8
6
  export declare function classifyThrow(err: unknown): ErrorCode | undefined;
9
7
  /** Known gateway codes map 1:1; the rest become `gateway_error` with a token-shaped `errorDetail`. */
@@ -24,8 +24,6 @@ export const ERROR_CODES = [
24
24
  'design_conflict',
25
25
  /** The call would leave a design whose edits are not saved; nothing changed. */
26
26
  'unsaved_changes',
27
- /** The caller aborted the call (`ctx.signal`) before it finished. */
28
- 'cancelled',
29
27
  // --- export -----------------------------------------------------------
30
28
  'unknown_format',
31
29
  // An unknown, empty or detached block, or a non-page html/audio target, is `bad_args`: the session checks the block once its export failed.
@@ -62,14 +60,6 @@ const KNOWN = new Set(ERROR_CODES);
62
60
  export function isErrorCode(value) {
63
61
  return typeof value === 'string' && KNOWN.has(value);
64
62
  }
65
- /** `cancelled` for a call that threw its caller's abort; any other failure keeps its own code. */
66
- export function callErrorCode(signal, threw, code) {
67
- return signal?.aborted === true &&
68
- threw !== undefined &&
69
- threw === signal.reason
70
- ? 'cancelled'
71
- : code;
72
- }
73
63
  /** Map a thrown error with a machine-readable identity onto a code; never reads its message. */
74
64
  export function classifyThrow(err) {
75
65
  if (err instanceof EngineCapacityError)
@@ -5,7 +5,7 @@ import { unjudgedNoticeText } from '../sessions/state.js';
5
5
  import { isCodesignError, isProductFailure } from '../host.js';
6
6
  import { MAX_SIDE_PX } from '../session/tiled-export.js';
7
7
  import { failedLoadsText } from './block-loads.js';
8
- import { callErrorCode, classifyThrow } from './errors.js';
8
+ import { classifyThrow } from './errors.js';
9
9
  import { designChangeText } from './design-change.js';
10
10
  import { PDFX_NON_PRINTER_PROFILE, PDFX_PROFILES, PDFX_STANDARDS, resolveHtmlArgs, resolvePdfxArgs } from './export-formats/options.js';
11
11
  import { describeFormats, formatSpec, orderedFormats } from './export-formats/table.js';
@@ -707,11 +707,10 @@ export function createExportTool(opts) {
707
707
  const a = rawArgs;
708
708
  const fmt = typeof a?.format === 'string' ? a.format : undefined;
709
709
  const fmtSpec = fmt ? formatSpec(fmt) : undefined;
710
- const succeeded = threw === undefined && result?.isError !== true;
711
- const resolvedCode = callErrorCode(ctx?.signal, threw, errorCode ?? classifyThrow(threw));
710
+ const resolvedCode = errorCode ?? classifyThrow(threw);
712
711
  telemetry.record({
713
712
  tool: 'export',
714
- succeeded,
713
+ succeeded: threw === undefined && result?.isError !== true,
715
714
  ...(resolvedCode ? { errorCode: resolvedCode } : {}),
716
715
  ...(errorDetail ? { errorDetail } : {}),
717
716
  totalMs: performance.now() - startedAt,
@@ -9,7 +9,7 @@ import { unjudgedStatusText } from '../sessions/state.js';
9
9
  import { isCodesignError, isProductFailure, CodesignError } from '../host.js';
10
10
  import { detailHintText } from '../host/preview-detail.js';
11
11
  import { failedLoadsText } from './block-loads.js';
12
- import { callErrorCode, classifyThrow } from './errors.js';
12
+ import { classifyThrow } from './errors.js';
13
13
  import { designChangeNotice } from './design-change.js';
14
14
  import { SpanRecorder, NOOP_TELEMETRY_SINK, summarizeResult, toErrorShape } from './spans.js';
15
15
  // A context budget, so the tool's: stops an omitted `blockIds` dumping every page into the conversation.
@@ -671,8 +671,7 @@ export function createPreviewTool(opts) {
671
671
  throw err;
672
672
  }
673
673
  finally {
674
- const succeeded = threw === undefined && result?.isError !== true;
675
- const resolvedCode = callErrorCode(ctx?.signal, threw, errorCode ?? classifyThrow(threw));
674
+ const resolvedCode = errorCode ?? classifyThrow(threw);
676
675
  // Derived from the arguments so they survive every failure path; block ids stay off the wire.
677
676
  const timed = rawArgs?.time !==
678
677
  undefined;
@@ -680,7 +679,7 @@ export function createPreviewTool(opts) {
680
679
  undefined;
681
680
  telemetry.record({
682
681
  tool: 'preview',
683
- succeeded,
682
+ succeeded: threw === undefined && result?.isError !== true,
684
683
  ...(resolvedCode ? { errorCode: resolvedCode } : {}),
685
684
  ...(errorDetail ? { errorDetail } : {}),
686
685
  toolFields: { timed, regioned, blocks: blockCount },
@@ -84,7 +84,7 @@
84
84
  "prepack": "pnpm run build && pnpm run build:npm && pnpm run api:check"
85
85
  },
86
86
  "dependencies": {
87
- "@imgly/design-lint": "0.5.1"
87
+ "@imgly/design-lint": "0.6.0"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@arethetypeswrong/cli": "^0.18.5",
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-wrapper.d.ts","sourceRoot":"","sources":["../../../src/catalog/tools/telemetry-wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AAEtC,oHAAoH;AACpH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,aAAa,GAAG,SAAS,GACnC,QAAQ,CAMV;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,aAAa,GACvB,QAAQ,CAgDV"}
1
+ {"version":3,"file":"telemetry-wrapper.d.ts","sourceRoot":"","sources":["../../../src/catalog/tools/telemetry-wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AAEtC,oHAAoH;AACpH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,aAAa,GAAG,SAAS,GACnC,QAAQ,CAMV;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,aAAa,GACvB,QAAQ,CA2CV"}
@@ -1,6 +1,6 @@
1
1
  // Reports every tool call to the diagnostics stream, for the tools that do not report their own spans.
2
2
  import { performance } from 'node:perf_hooks';
3
- import { callErrorCode, classifyThrow, summarizeResult, toErrorShape } from '@imgly/codesign-sdk/internal';
3
+ import { classifyThrow, summarizeResult, toErrorShape } from '@imgly/codesign-sdk/internal';
4
4
  /** Telemetry inside `wrapEngineCapacity`, which swallows the error; marked so the server does not wrap it twice. */
5
5
  export function withTelemetryCovered(registration, telemetry) {
6
6
  if (!telemetry || registration.telemetrySelfReported)
@@ -33,13 +33,12 @@ export function wrapWithTelemetry(registration, telemetry) {
33
33
  catch {
34
34
  // a fields extractor must never affect the call or the report
35
35
  }
36
- // A tool signals failure two ways: it throws, or it returns
37
- // { isError: true }. Both count as not-succeeded.
38
- const succeeded = threw === undefined && result?.isError !== true;
39
- const errorCode = callErrorCode(ctx?.signal, threw, classifyThrow(threw));
36
+ const errorCode = classifyThrow(threw);
40
37
  telemetry.record({
41
38
  tool: registration.name,
42
- succeeded,
39
+ // A tool signals failure two ways: it throws, or it returns
40
+ // { isError: true }. Both count as not-succeeded.
41
+ succeeded: threw === undefined && result?.isError !== true,
43
42
  // Only a THROW can be classified here: a tool that answers with
44
43
  // { isError: true } has already turned its reason into prose, and
45
44
  // prose is not a code. Those tools self-report instead.
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-wrapper.js","sourceRoot":"","sources":["../../../src/catalog/tools/telemetry-wrapper.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EAGb,MAAM,8BAA8B,CAAC;AAEtC,oHAAoH;AACpH,MAAM,UAAU,oBAAoB,CAClC,YAAsB,EACtB,SAAoC;IAEpC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,qBAAqB;QAAE,OAAO,YAAY,CAAC;IAC1E,OAAO;QACL,GAAG,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC;QAC7C,qBAAqB,EAAE,IAAI;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAsB,EACtB,SAAwB;IAExB,OAAO;QACL,GAAG,YAAY;QACf,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEpC,IAAI,MAA8B,CAAC;YACnC,IAAI,KAAc,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC/C,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM,GAAG,CAAC;YACZ,CAAC;oBAAS,CAAC;gBACT,IAAI,UAAiE,CAAC;gBACtE,IAAI,CAAC;oBACH,UAAU,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC/D,CAAC;gBAAC,MAAM,CAAC;oBACP,8DAA8D;gBAChE,CAAC;gBACD,4DAA4D;gBAC5D,kDAAkD;gBAClD,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;gBAClE,MAAM,SAAS,GAAG,aAAa,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EACL,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;gBACF,SAAS,CAAC,MAAM,CAAC;oBACf,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,SAAS;oBACT,gEAAgE;oBAChE,kEAAkE;oBAClE,wDAAwD;oBACxD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;oBACtC,KAAK,EAAE,EAAE;oBACT,IAAI,EAAE,OAAO;oBACb,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;wBAClD,CAAC,CAAC,EAAE,UAAU,EAAE;wBAChB,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Reports every tool call to the diagnostics stream, for the tools that do not report their own spans.\nimport { performance } from 'node:perf_hooks';\nimport {\n callErrorCode,\n classifyThrow,\n summarizeResult,\n toErrorShape,\n type HostTool,\n type TelemetrySink\n} from '@imgly/codesign-sdk/internal';\n\n/** Telemetry inside `wrapEngineCapacity`, which swallows the error; marked so the server does not wrap it twice. */\nexport function withTelemetryCovered(\n registration: HostTool,\n telemetry: TelemetrySink | undefined\n): HostTool {\n if (!telemetry || registration.telemetrySelfReported) return registration;\n return {\n ...wrapWithTelemetry(registration, telemetry),\n telemetrySelfReported: true\n };\n}\n\nexport function wrapWithTelemetry(\n registration: HostTool,\n telemetry: TelemetrySink\n): HostTool {\n return {\n ...registration,\n call: async (rawArgs, ctx) => {\n const startedAt = performance.now();\n type CallResult = Awaited<ReturnType<HostTool['call']>>;\n let result: CallResult | undefined;\n let threw: unknown;\n try {\n result = await registration.call(rawArgs, ctx);\n return result;\n } catch (err) {\n threw = err;\n throw err;\n } finally {\n let toolFields: Record<string, string | number | boolean> | undefined;\n try {\n toolFields = registration.telemetryFields?.(rawArgs, result);\n } catch {\n // a fields extractor must never affect the call or the report\n }\n // A tool signals failure two ways: it throws, or it returns\n // { isError: true }. Both count as not-succeeded.\n const succeeded = threw === undefined && result?.isError !== true;\n const errorCode = callErrorCode(\n ctx?.signal,\n threw,\n classifyThrow(threw)\n );\n telemetry.record({\n tool: registration.name,\n succeeded,\n // Only a THROW can be classified here: a tool that answers with\n // { isError: true } has already turned its reason into prose, and\n // prose is not a code. Those tools self-report instead.\n ...(errorCode ? { errorCode } : {}),\n totalMs: performance.now() - startedAt,\n spans: [],\n args: rawArgs,\n ...(result !== undefined ? { result: summarizeResult(result) } : {}),\n ...(toolFields && Object.keys(toolFields).length > 0\n ? { toolFields }\n : {}),\n ...(threw ? { error: toErrorShape(threw) } : {})\n });\n }\n }\n };\n}\n"]}
1
+ {"version":3,"file":"telemetry-wrapper.js","sourceRoot":"","sources":["../../../src/catalog/tools/telemetry-wrapper.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EAGb,MAAM,8BAA8B,CAAC;AAEtC,oHAAoH;AACpH,MAAM,UAAU,oBAAoB,CAClC,YAAsB,EACtB,SAAoC;IAEpC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,qBAAqB;QAAE,OAAO,YAAY,CAAC;IAC1E,OAAO;QACL,GAAG,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC;QAC7C,qBAAqB,EAAE,IAAI;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAsB,EACtB,SAAwB;IAExB,OAAO;QACL,GAAG,YAAY;QACf,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEpC,IAAI,MAA8B,CAAC;YACnC,IAAI,KAAc,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC/C,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM,GAAG,CAAC;YACZ,CAAC;oBAAS,CAAC;gBACT,IAAI,UAAiE,CAAC;gBACtE,IAAI,CAAC;oBACH,UAAU,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC/D,CAAC;gBAAC,MAAM,CAAC;oBACP,8DAA8D;gBAChE,CAAC;gBACD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvC,SAAS,CAAC,MAAM,CAAC;oBACf,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,4DAA4D;oBAC5D,kDAAkD;oBAClD,SAAS,EAAE,KAAK,KAAK,SAAS,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI;oBAC1D,gEAAgE;oBAChE,kEAAkE;oBAClE,wDAAwD;oBACxD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;oBACtC,KAAK,EAAE,EAAE;oBACT,IAAI,EAAE,OAAO;oBACb,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;wBAClD,CAAC,CAAC,EAAE,UAAU,EAAE;wBAChB,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Reports every tool call to the diagnostics stream, for the tools that do not report their own spans.\nimport { performance } from 'node:perf_hooks';\nimport {\n classifyThrow,\n summarizeResult,\n toErrorShape,\n type HostTool,\n type TelemetrySink\n} from '@imgly/codesign-sdk/internal';\n\n/** Telemetry inside `wrapEngineCapacity`, which swallows the error; marked so the server does not wrap it twice. */\nexport function withTelemetryCovered(\n registration: HostTool,\n telemetry: TelemetrySink | undefined\n): HostTool {\n if (!telemetry || registration.telemetrySelfReported) return registration;\n return {\n ...wrapWithTelemetry(registration, telemetry),\n telemetrySelfReported: true\n };\n}\n\nexport function wrapWithTelemetry(\n registration: HostTool,\n telemetry: TelemetrySink\n): HostTool {\n return {\n ...registration,\n call: async (rawArgs, ctx) => {\n const startedAt = performance.now();\n type CallResult = Awaited<ReturnType<HostTool['call']>>;\n let result: CallResult | undefined;\n let threw: unknown;\n try {\n result = await registration.call(rawArgs, ctx);\n return result;\n } catch (err) {\n threw = err;\n throw err;\n } finally {\n let toolFields: Record<string, string | number | boolean> | undefined;\n try {\n toolFields = registration.telemetryFields?.(rawArgs, result);\n } catch {\n // a fields extractor must never affect the call or the report\n }\n const errorCode = classifyThrow(threw);\n telemetry.record({\n tool: registration.name,\n // A tool signals failure two ways: it throws, or it returns\n // { isError: true }. Both count as not-succeeded.\n succeeded: threw === undefined && result?.isError !== true,\n // Only a THROW can be classified here: a tool that answers with\n // { isError: true } has already turned its reason into prose, and\n // prose is not a code. Those tools self-report instead.\n ...(errorCode ? { errorCode } : {}),\n totalMs: performance.now() - startedAt,\n spans: [],\n args: rawArgs,\n ...(result !== undefined ? { result: summarizeResult(result) } : {}),\n ...(toolFields && Object.keys(toolFields).length > 0\n ? { toolFields }\n : {}),\n ...(threw ? { error: toErrorShape(threw) } : {})\n });\n }\n }\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  export declare const RELEASE_BUILD = true;
2
- export declare const CHANNEL = "next";
2
+ export declare const CHANNEL = "stable";
3
3
  export declare const SENTRY_DSN = "https://10cdfd2ee884954aab53abe5a2878b75@o497090.ingest.us.sentry.io/4512209592909824";
4
- export declare const COMMIT = "e4efbda7bf4f5d2899d03283b2426d04b6213b1d";
4
+ export declare const COMMIT = "e1c218639cd7c80f8bdec4c058a9167dd8c33f3a";
5
5
  export declare const KNOB_ENV_HELP = " IMGLY_CESDK_ENGINE engine flavor: wasm | native (default: native,\n falling back to wasm if it cannot start).\n IMGLY_DISABLE_VIEWER on hides the browser viewer; designs are\n delivered as files (default: off).\n IMGLY_TELEMETRY on | off \u2014 usage telemetry (default: on).\n IMGLY_ERROR_REPORTING on | off \u2014 send error reports (crashes, failed\n tool calls) to IMG.LY (default: on).\n IMGLY_PLUGIN_TELEMETRY on | off \u2014 set by the Claude plugin's \"Send\n usage data\" setting; off turns usage telemetry\n and error reports off (default: on).\n IMGLY_PLUGIN_ERROR_REPORTING on | off \u2014 set by the Claude plugin's \"Send\n error reports\" setting; off turns error reports\n off (default: on).\n IMGLY_GATEWAY_API_KEY AI gateway key; an alternative to signing in\n with the login tool.\n";
6
6
  //# sourceMappingURL=release-flags.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-flags.generated.d.ts","sourceRoot":"","sources":["../../../src/services/flags/release-flags.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,eAAO,MAAM,OAAO,SAAS,CAAC;AAE9B,eAAO,MAAM,UAAU,0FAA0F,CAAC;AAElH,eAAO,MAAM,MAAM,6CAA6C,CAAC;AAGjE,eAAO,MAAM,aAAa,+mCAA2lC,CAAC"}
1
+ {"version":3,"file":"release-flags.generated.d.ts","sourceRoot":"","sources":["../../../src/services/flags/release-flags.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,eAAO,MAAM,UAAU,0FAA0F,CAAC;AAElH,eAAO,MAAM,MAAM,6CAA6C,CAAC;AAGjE,eAAO,MAAM,aAAa,+mCAA2lC,CAAC"}
@@ -2,11 +2,11 @@
2
2
  // True only when IMGLY_RELEASE_BUILD=true was set at build/publish time.
3
3
  export const RELEASE_BUILD = true;
4
4
  // Build profile: stable | next | canary. See src/services/flags/manifest.ts.
5
- export const CHANNEL = 'next';
5
+ export const CHANNEL = 'stable';
6
6
  // Error-report destination; empty unless a release build was given IMGLY_SENTRY_DSN.
7
7
  export const SENTRY_DSN = "https://10cdfd2ee884954aab53abe5a2878b75@o497090.ingest.us.sentry.io/4512209592909824";
8
8
  // The commit it is built from; empty when it is not known.
9
- export const COMMIT = "e4efbda7bf4f5d2899d03283b2426d04b6213b1d";
9
+ export const COMMIT = "e1c218639cd7c80f8bdec4c058a9167dd8c33f3a";
10
10
  // The knob --help text. A release build lists only the honored knobs, so
11
11
  // the frozen names are absent from the published dist, not just unprinted.
12
12
  export const KNOB_ENV_HELP = " IMGLY_CESDK_ENGINE engine flavor: wasm | native (default: native,\n falling back to wasm if it cannot start).\n IMGLY_DISABLE_VIEWER on hides the browser viewer; designs are\n delivered as files (default: off).\n IMGLY_TELEMETRY on | off — usage telemetry (default: on).\n IMGLY_ERROR_REPORTING on | off — send error reports (crashes, failed\n tool calls) to IMG.LY (default: on).\n IMGLY_PLUGIN_TELEMETRY on | off — set by the Claude plugin's \"Send\n usage data\" setting; off turns usage telemetry\n and error reports off (default: on).\n IMGLY_PLUGIN_ERROR_REPORTING on | off — set by the Claude plugin's \"Send\n error reports\" setting; off turns error reports\n off (default: on).\n IMGLY_GATEWAY_API_KEY AI gateway key; an alternative to signing in\n with the login tool.\n";
@@ -1 +1 @@
1
- {"version":3,"file":"release-flags.generated.js","sourceRoot":"","sources":["../../../src/services/flags/release-flags.generated.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAC9B,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,uFAAuF,CAAC;AAClH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,MAAM,GAAG,0CAA0C,CAAC;AACjE,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG,wlCAAwlC,CAAC","sourcesContent":["// AUTO-GENERATED by scripts/generate-release-flags.mjs — do not edit.\n// True only when IMGLY_RELEASE_BUILD=true was set at build/publish time.\nexport const RELEASE_BUILD = true;\n// Build profile: stable | next | canary. See src/services/flags/manifest.ts.\nexport const CHANNEL = 'next';\n// Error-report destination; empty unless a release build was given IMGLY_SENTRY_DSN.\nexport const SENTRY_DSN = \"https://10cdfd2ee884954aab53abe5a2878b75@o497090.ingest.us.sentry.io/4512209592909824\";\n// The commit it is built from; empty when it is not known.\nexport const COMMIT = \"e4efbda7bf4f5d2899d03283b2426d04b6213b1d\";\n// The knob --help text. A release build lists only the honored knobs, so\n// the frozen names are absent from the published dist, not just unprinted.\nexport const KNOB_ENV_HELP = \" IMGLY_CESDK_ENGINE engine flavor: wasm | native (default: native,\\n falling back to wasm if it cannot start).\\n IMGLY_DISABLE_VIEWER on hides the browser viewer; designs are\\n delivered as files (default: off).\\n IMGLY_TELEMETRY on | off — usage telemetry (default: on).\\n IMGLY_ERROR_REPORTING on | off — send error reports (crashes, failed\\n tool calls) to IMG.LY (default: on).\\n IMGLY_PLUGIN_TELEMETRY on | off — set by the Claude plugin's \\\"Send\\n usage data\\\" setting; off turns usage telemetry\\n and error reports off (default: on).\\n IMGLY_PLUGIN_ERROR_REPORTING on | off — set by the Claude plugin's \\\"Send\\n error reports\\\" setting; off turns error reports\\n off (default: on).\\n IMGLY_GATEWAY_API_KEY AI gateway key; an alternative to signing in\\n with the login tool.\\n\";\n"]}
1
+ {"version":3,"file":"release-flags.generated.js","sourceRoot":"","sources":["../../../src/services/flags/release-flags.generated.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,uFAAuF,CAAC;AAClH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,MAAM,GAAG,0CAA0C,CAAC;AACjE,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG,wlCAAwlC,CAAC","sourcesContent":["// AUTO-GENERATED by scripts/generate-release-flags.mjs — do not edit.\n// True only when IMGLY_RELEASE_BUILD=true was set at build/publish time.\nexport const RELEASE_BUILD = true;\n// Build profile: stable | next | canary. See src/services/flags/manifest.ts.\nexport const CHANNEL = 'stable';\n// Error-report destination; empty unless a release build was given IMGLY_SENTRY_DSN.\nexport const SENTRY_DSN = \"https://10cdfd2ee884954aab53abe5a2878b75@o497090.ingest.us.sentry.io/4512209592909824\";\n// The commit it is built from; empty when it is not known.\nexport const COMMIT = \"e1c218639cd7c80f8bdec4c058a9167dd8c33f3a\";\n// The knob --help text. A release build lists only the honored knobs, so\n// the frozen names are absent from the published dist, not just unprinted.\nexport const KNOB_ENV_HELP = \" IMGLY_CESDK_ENGINE engine flavor: wasm | native (default: native,\\n falling back to wasm if it cannot start).\\n IMGLY_DISABLE_VIEWER on hides the browser viewer; designs are\\n delivered as files (default: off).\\n IMGLY_TELEMETRY on | off — usage telemetry (default: on).\\n IMGLY_ERROR_REPORTING on | off — send error reports (crashes, failed\\n tool calls) to IMG.LY (default: on).\\n IMGLY_PLUGIN_TELEMETRY on | off — set by the Claude plugin's \\\"Send\\n usage data\\\" setting; off turns usage telemetry\\n and error reports off (default: on).\\n IMGLY_PLUGIN_ERROR_REPORTING on | off — set by the Claude plugin's \\\"Send\\n error reports\\\" setting; off turns error reports\\n off (default: on).\\n IMGLY_GATEWAY_API_KEY AI gateway key; an alternative to signing in\\n with the login tool.\\n\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error-policy.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/error-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CA+BhD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,KAAK,GAAG,QAAQ,CAmDlE,CAAC;AAwBF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,KAAK,IAAI,eAAe,CAE1B;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAsCvD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAqB9D;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAInD;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,OAAiB,GACzB;IAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,CA+BpD"}
1
+ {"version":3,"file":"error-policy.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/error-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CA8BhD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,KAAK,GAAG,QAAQ,CAmDlE,CAAC;AAwBF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,KAAK,IAAI,eAAe,CAE1B;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAsCvD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAqB9D;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAInD;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,OAAiB,GACzB;IAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,CA+BpD"}
@@ -12,7 +12,6 @@ export const ERROR_FAULT = {
12
12
  design_changed: 'user',
13
13
  design_conflict: 'user',
14
14
  unsaved_changes: 'user',
15
- cancelled: 'user',
16
15
  unknown_format: 'agent',
17
16
  render_failed: 'ours',
18
17
  pdfx_convert_failed: 'ours',
@@ -1 +1 @@
1
- {"version":3,"file":"error-policy.js","sourceRoot":"","sources":["../../../src/services/telemetry/error-policy.ts"],"names":[],"mappings":"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","sourcesContent":["// Which failed tool calls are ours to report, and where a thrown error came from.\nimport {\n DESIGN_ERROR_CODES,\n type DesignErrorCode,\n type ErrorCode,\n type ToolCallReport\n} from '@imgly/codesign-sdk/internal';\nimport { CHANNEL } from '../flags/channel.js';\nimport type { Channel } from '../flags/manifest.js';\n\nexport type Fault = 'agent' | 'user' | 'upstream' | 'ours';\n\nexport const ERROR_FAULT: Record<ErrorCode, Fault> = {\n executor_capacity: 'user',\n resources_pending: 'upstream',\n bad_args: 'agent',\n unknown_revision: 'agent',\n feature_disabled: 'user',\n engine_unsupported: 'user',\n internal_error: 'ours',\n design_changed: 'user',\n design_conflict: 'user',\n unsaved_changes: 'user',\n cancelled: 'user',\n unknown_format: 'agent',\n render_failed: 'ours',\n pdfx_convert_failed: 'ours',\n profile_fetch_failed: 'upstream',\n export_refused: 'upstream',\n outpath_write_failed: 'user',\n code_threw: 'agent',\n invalid_return: 'agent',\n dialect_violation: 'agent',\n scene_file_uri: 'agent',\n scene_inline_bytes: 'agent',\n unauthorized: 'upstream',\n no_credentials: 'upstream',\n insufficient_credits: 'upstream',\n model_not_found: 'upstream',\n generation_failed: 'upstream',\n output_download_failed: 'upstream',\n service_error: 'upstream',\n gateway_error: 'upstream'\n};\n\n/** Who caused a design facade error, by the code the facade gave it. */\nexport const DESIGN_FAULT: Record<DesignErrorCode, Fault | 'engine'> = {\n 'DESIGN.UNKNOWN_UUID': 'agent',\n 'DESIGN.UNKNOWN_BLOCK': 'agent',\n 'DESIGN.BAD_ARGUMENT': 'agent',\n 'DESIGN.PROMISE_AS_ID': 'agent',\n 'DESIGN.TREE_NODE_WITHOUT_UUID': 'agent',\n 'DESIGN.UNKNOWN_LEAF': 'agent',\n 'DESIGN.LEAF_VALUE': 'agent',\n 'DESIGN.UNKNOWN_SELECTOR': 'agent',\n 'DESIGN.EMPTY_SELECT': 'agent',\n 'DESIGN.WRITE_ONLY': 'agent',\n 'DESIGN.NO_SCENE_FOR_UNITS': 'agent',\n 'DESIGN.FONT_SIZE_FORMAT': 'agent',\n 'DESIGN.NO_SLOT': 'agent',\n 'DESIGN.NO_FILL': 'agent',\n 'DESIGN.NOT_APPLICABLE': 'agent',\n 'DESIGN.BLOCK_REF': 'agent',\n 'DESIGN.MATTE_SOURCE': 'agent',\n 'DESIGN.EFFECT_SOURCE': 'agent',\n 'DESIGN.ANIMATION_LEAF': 'agent',\n 'DESIGN.KEYFRAMES': 'agent',\n 'DESIGN.NOT_ANIMATABLE': 'agent',\n 'DESIGN.TEXT_FILL_COLOR': 'agent',\n 'DESIGN.TEXT_FRAME_TOO_SMALL': 'agent',\n 'DESIGN.METRICS_NOT_CACHED': 'agent',\n 'DESIGN.SPEC_TYPE': 'agent',\n 'DESIGN.TRANSITION_WITHOUT_NEXT': 'agent',\n 'DESIGN.PATH_SPEC': 'agent',\n 'DESIGN.CREATE_INSTEAD': 'agent',\n 'DESIGN.GROUP_WITHOUT_CHILDREN': 'agent',\n 'DESIGN.INDEX_OUT_OF_BOUNDS': 'agent',\n 'DESIGN.ORDER_TARGET': 'agent',\n 'DESIGN.CAPTION_PARENT': 'agent',\n 'DESIGN.FONT_ARGS': 'agent',\n 'DESIGN.FONT_NEEDS_ASYNC': 'agent',\n 'DESIGN.FONT_WEIGHT': 'agent',\n 'DESIGN.NO_TYPEFACE': 'agent',\n 'DESIGN.NO_STYLED_RUN': 'agent',\n 'DESIGN.FONT_NOT_FOUND': 'agent',\n 'DESIGN.FONT_NO_FILES': 'upstream',\n 'DESIGN.FONT_NAME_TAKEN': 'agent',\n 'DESIGN.FONT_SOURCE_MISSING': 'upstream',\n 'DESIGN.FONT_METRICS_FETCH': 'upstream',\n 'DESIGN.RESOURCE_LOAD_FAILED': 'upstream',\n 'DESIGN.TRANSCRIPT_READ': 'agent',\n 'DESIGN.TEXT_NOT_FOUND': 'agent',\n 'DESIGN.TEXT_AMBIGUOUS': 'agent',\n 'DESIGN.PROPERTY_BOUND': 'agent',\n 'DESIGN.VARIABLE_TYPE': 'agent',\n 'DESIGN.INTERNAL': 'ours',\n 'DESIGN.ENGINE': 'engine'\n};\n\n/** Engine codes for a value or block the model's code chose, so the model is at fault. */\nconst ENGINE_MODEL_MISTAKE: ReadonlySet<string> = new Set([\n 'BLOCK.ENUM_VALUE_INVALID',\n 'BLOCK.COLOR_COMPONENT_OUT_OF_RANGE',\n 'BLOCK.VALUE_NOT_FINITE',\n 'BLOCK.VALUES_NOT_FINITE_THREE',\n 'BLOCK.NOT_KNOWN_BLOCK_TYPE',\n 'EDITOR.AV_OPERATION_BLOCK_TYPE_UNSUPPORTED',\n 'EDITOR.NEGATIVE_DURATION',\n 'BLOCK.NOT_ATTACHED_TO_SCENE',\n 'BLOCK.TEXT_RANGE_FROM_OUT_OF_RANGE',\n 'BLOCK.TEXT_RANGE_TO_OUT_OF_RANGE',\n 'BLOCK.OPERATION_PRECONDITION_FAILED',\n 'BLOCK.SCOPE_INVALID'\n]);\n\n/** Engine codes that are the model's only when its own raw call raised them: inside the facade the id or the path was ours. */\nconst RAW_MODEL_MISTAKE: ReadonlySet<string> = new Set([\n 'BLOCK.UNKNOWN',\n 'BLOCK.PROPERTY_NOT_FOUND_WITH_HINT'\n]);\n\nexport function isDesignErrorCode(\n value: string | undefined\n): value is DesignErrorCode {\n return (DESIGN_ERROR_CODES as readonly string[]).includes(value ?? '');\n}\n\nexport type ThrowSite = 'engine' | 'model' | 'unknown';\n\nconst EDIT_SCOPE_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]host[\\\\/]edit-scope\\.js/;\nconst FACADE_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]design[\\\\/]/;\nconst ENGINE_FRAME =\n /node_modules[\\\\/]@cesdk[\\\\/]|codesign-sdk[\\\\/]dist[\\\\/](?:design[\\\\/]|host[\\\\/]edit-scope\\.js)/;\n// edit's wrapper around engine.design, between the facade and the model's code.\nconst EDIT_CODE_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]host[\\\\/]edit-code\\.js:/;\nconst MODEL_FRAME = /eval at runEditCode/;\n// CE.SDK's argument checks: WASM's validation and native's binding.\nconst ARGUMENT_ERROR =\n /^(?:StructError: |TypeError: (?:Error in argument |[^\\n]* expected\\n))/;\n// edit's patch of scene.create, between the engine and the model's code.\nconst SCENE_PATCH_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]host[\\\\/]scene\\.js:/;\n// A text helper tripping over a value of the wrong shape; from the facade, which names what it refuses, it is a bug of ours.\nconst BUILTIN_ERROR = /^(?:TypeError|RangeError): /;\n\n// A parse error in edit code is thrown by the AsyncFunction constructor that runEditCode calls.\nconst MODEL_PARSE =\n /^\\s*at new AsyncFunction \\(<anonymous>\\)\\n\\s*at (?:async )?runEditCode /;\n\nconst sourceFrames = (stack: string | undefined): string[] =>\n stack\n ?.split('\\n')\n .filter(\n (line) =>\n line.trimStart().startsWith('at ') &&\n !/\\((?:<anonymous>|native)\\)$|[( ]node:|[( ]wasm:\\/\\//.test(line)\n ) ?? [];\n\nconst callerOf = (frames: string[]): string | undefined =>\n frames.find(\n (f) =>\n !ENGINE_FRAME.test(f) &&\n !SCENE_PATCH_FRAME.test(f) &&\n !(EDIT_CODE_FRAME.test(f) && !f.includes('runEditCode'))\n );\n\nexport function throwSite(stack: string | undefined): ThrowSite {\n const frames = stack?.slice(stack.indexOf('\\n at ') + 1);\n if (frames !== undefined && MODEL_PARSE.test(frames)) return 'model';\n const all = sourceFrames(stack);\n const top = all[0];\n if (top === undefined) return 'unknown';\n if (ENGINE_FRAME.test(top)) {\n const caller = callerOf(all);\n const builtin = BUILTIN_ERROR.test(stack ?? '');\n const refused =\n ARGUMENT_ERROR.test(stack ?? '') ||\n (EDIT_SCOPE_FRAME.test(top) && builtin);\n if (refused && caller !== undefined && MODEL_FRAME.test(caller))\n return 'model';\n // The text helpers and the facade are our code, not the engine's: stable must still hear of them.\n return EDIT_SCOPE_FRAME.test(top) || (FACADE_FRAME.test(top) && builtin)\n ? 'unknown'\n : 'engine';\n }\n if (MODEL_FRAME.test(top)) return 'model';\n return 'unknown';\n}\n\n// Looks past engine and design-layer frames to who called them.\nexport function thrownByModel(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n const caller = callerOf(sourceFrames(err.stack));\n return caller !== undefined && MODEL_FRAME.test(caller);\n}\n\nexport function reportable(\n report: ToolCallReport,\n channel: Channel = CHANNEL\n): { fault: 'ours' | 'engine' | 'agent' } | undefined {\n if (report.succeeded) return undefined;\n const code = report.errorCode;\n if (code === undefined) return report.error ? { fault: 'ours' } : undefined;\n if (code === 'code_threw' && isDesignErrorCode(report.errorDetail)) {\n const fault =\n report.errorDetail === 'DESIGN.ENGINE' &&\n ENGINE_MODEL_MISTAKE.has(report.designError?.engineCode ?? '')\n ? 'agent'\n : DESIGN_FAULT[report.errorDetail];\n if (fault === 'engine')\n return channel !== 'stable' ? { fault: 'engine' } : undefined;\n return fault === 'ours' || fault === 'agent' ? { fault } : undefined;\n }\n if (code === 'code_threw') {\n const stack = report.error?.stack;\n const caller = callerOf(sourceFrames(stack));\n if (\n ENGINE_MODEL_MISTAKE.has(report.errorDetail ?? '') ||\n (RAW_MODEL_MISTAKE.has(report.errorDetail ?? '') &&\n caller !== undefined &&\n MODEL_FRAME.test(caller))\n )\n return { fault: 'agent' };\n const site = throwSite(stack);\n if (site === 'engine')\n return channel !== 'stable' ? { fault: 'engine' } : undefined;\n if (site === 'unknown' && stack !== undefined) return { fault: 'ours' };\n }\n const fault = ERROR_FAULT[code];\n return fault === 'ours' || fault === 'agent' ? { fault } : undefined;\n}\n"]}
1
+ {"version":3,"file":"error-policy.js","sourceRoot":"","sources":["../../../src/services/telemetry/error-policy.ts"],"names":[],"mappings":"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","sourcesContent":["// Which failed tool calls are ours to report, and where a thrown error came from.\nimport {\n DESIGN_ERROR_CODES,\n type DesignErrorCode,\n type ErrorCode,\n type ToolCallReport\n} from '@imgly/codesign-sdk/internal';\nimport { CHANNEL } from '../flags/channel.js';\nimport type { Channel } from '../flags/manifest.js';\n\nexport type Fault = 'agent' | 'user' | 'upstream' | 'ours';\n\nexport const ERROR_FAULT: Record<ErrorCode, Fault> = {\n executor_capacity: 'user',\n resources_pending: 'upstream',\n bad_args: 'agent',\n unknown_revision: 'agent',\n feature_disabled: 'user',\n engine_unsupported: 'user',\n internal_error: 'ours',\n design_changed: 'user',\n design_conflict: 'user',\n unsaved_changes: 'user',\n unknown_format: 'agent',\n render_failed: 'ours',\n pdfx_convert_failed: 'ours',\n profile_fetch_failed: 'upstream',\n export_refused: 'upstream',\n outpath_write_failed: 'user',\n code_threw: 'agent',\n invalid_return: 'agent',\n dialect_violation: 'agent',\n scene_file_uri: 'agent',\n scene_inline_bytes: 'agent',\n unauthorized: 'upstream',\n no_credentials: 'upstream',\n insufficient_credits: 'upstream',\n model_not_found: 'upstream',\n generation_failed: 'upstream',\n output_download_failed: 'upstream',\n service_error: 'upstream',\n gateway_error: 'upstream'\n};\n\n/** Who caused a design facade error, by the code the facade gave it. */\nexport const DESIGN_FAULT: Record<DesignErrorCode, Fault | 'engine'> = {\n 'DESIGN.UNKNOWN_UUID': 'agent',\n 'DESIGN.UNKNOWN_BLOCK': 'agent',\n 'DESIGN.BAD_ARGUMENT': 'agent',\n 'DESIGN.PROMISE_AS_ID': 'agent',\n 'DESIGN.TREE_NODE_WITHOUT_UUID': 'agent',\n 'DESIGN.UNKNOWN_LEAF': 'agent',\n 'DESIGN.LEAF_VALUE': 'agent',\n 'DESIGN.UNKNOWN_SELECTOR': 'agent',\n 'DESIGN.EMPTY_SELECT': 'agent',\n 'DESIGN.WRITE_ONLY': 'agent',\n 'DESIGN.NO_SCENE_FOR_UNITS': 'agent',\n 'DESIGN.FONT_SIZE_FORMAT': 'agent',\n 'DESIGN.NO_SLOT': 'agent',\n 'DESIGN.NO_FILL': 'agent',\n 'DESIGN.NOT_APPLICABLE': 'agent',\n 'DESIGN.BLOCK_REF': 'agent',\n 'DESIGN.MATTE_SOURCE': 'agent',\n 'DESIGN.EFFECT_SOURCE': 'agent',\n 'DESIGN.ANIMATION_LEAF': 'agent',\n 'DESIGN.KEYFRAMES': 'agent',\n 'DESIGN.NOT_ANIMATABLE': 'agent',\n 'DESIGN.TEXT_FILL_COLOR': 'agent',\n 'DESIGN.TEXT_FRAME_TOO_SMALL': 'agent',\n 'DESIGN.METRICS_NOT_CACHED': 'agent',\n 'DESIGN.SPEC_TYPE': 'agent',\n 'DESIGN.TRANSITION_WITHOUT_NEXT': 'agent',\n 'DESIGN.PATH_SPEC': 'agent',\n 'DESIGN.CREATE_INSTEAD': 'agent',\n 'DESIGN.GROUP_WITHOUT_CHILDREN': 'agent',\n 'DESIGN.INDEX_OUT_OF_BOUNDS': 'agent',\n 'DESIGN.ORDER_TARGET': 'agent',\n 'DESIGN.CAPTION_PARENT': 'agent',\n 'DESIGN.FONT_ARGS': 'agent',\n 'DESIGN.FONT_NEEDS_ASYNC': 'agent',\n 'DESIGN.FONT_WEIGHT': 'agent',\n 'DESIGN.NO_TYPEFACE': 'agent',\n 'DESIGN.NO_STYLED_RUN': 'agent',\n 'DESIGN.FONT_NOT_FOUND': 'agent',\n 'DESIGN.FONT_NO_FILES': 'upstream',\n 'DESIGN.FONT_NAME_TAKEN': 'agent',\n 'DESIGN.FONT_SOURCE_MISSING': 'upstream',\n 'DESIGN.FONT_METRICS_FETCH': 'upstream',\n 'DESIGN.RESOURCE_LOAD_FAILED': 'upstream',\n 'DESIGN.TRANSCRIPT_READ': 'agent',\n 'DESIGN.TEXT_NOT_FOUND': 'agent',\n 'DESIGN.TEXT_AMBIGUOUS': 'agent',\n 'DESIGN.PROPERTY_BOUND': 'agent',\n 'DESIGN.VARIABLE_TYPE': 'agent',\n 'DESIGN.INTERNAL': 'ours',\n 'DESIGN.ENGINE': 'engine'\n};\n\n/** Engine codes for a value or block the model's code chose, so the model is at fault. */\nconst ENGINE_MODEL_MISTAKE: ReadonlySet<string> = new Set([\n 'BLOCK.ENUM_VALUE_INVALID',\n 'BLOCK.COLOR_COMPONENT_OUT_OF_RANGE',\n 'BLOCK.VALUE_NOT_FINITE',\n 'BLOCK.VALUES_NOT_FINITE_THREE',\n 'BLOCK.NOT_KNOWN_BLOCK_TYPE',\n 'EDITOR.AV_OPERATION_BLOCK_TYPE_UNSUPPORTED',\n 'EDITOR.NEGATIVE_DURATION',\n 'BLOCK.NOT_ATTACHED_TO_SCENE',\n 'BLOCK.TEXT_RANGE_FROM_OUT_OF_RANGE',\n 'BLOCK.TEXT_RANGE_TO_OUT_OF_RANGE',\n 'BLOCK.OPERATION_PRECONDITION_FAILED',\n 'BLOCK.SCOPE_INVALID'\n]);\n\n/** Engine codes that are the model's only when its own raw call raised them: inside the facade the id or the path was ours. */\nconst RAW_MODEL_MISTAKE: ReadonlySet<string> = new Set([\n 'BLOCK.UNKNOWN',\n 'BLOCK.PROPERTY_NOT_FOUND_WITH_HINT'\n]);\n\nexport function isDesignErrorCode(\n value: string | undefined\n): value is DesignErrorCode {\n return (DESIGN_ERROR_CODES as readonly string[]).includes(value ?? '');\n}\n\nexport type ThrowSite = 'engine' | 'model' | 'unknown';\n\nconst EDIT_SCOPE_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]host[\\\\/]edit-scope\\.js/;\nconst FACADE_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]design[\\\\/]/;\nconst ENGINE_FRAME =\n /node_modules[\\\\/]@cesdk[\\\\/]|codesign-sdk[\\\\/]dist[\\\\/](?:design[\\\\/]|host[\\\\/]edit-scope\\.js)/;\n// edit's wrapper around engine.design, between the facade and the model's code.\nconst EDIT_CODE_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]host[\\\\/]edit-code\\.js:/;\nconst MODEL_FRAME = /eval at runEditCode/;\n// CE.SDK's argument checks: WASM's validation and native's binding.\nconst ARGUMENT_ERROR =\n /^(?:StructError: |TypeError: (?:Error in argument |[^\\n]* expected\\n))/;\n// edit's patch of scene.create, between the engine and the model's code.\nconst SCENE_PATCH_FRAME = /codesign-sdk[\\\\/]dist[\\\\/]host[\\\\/]scene\\.js:/;\n// A text helper tripping over a value of the wrong shape; from the facade, which names what it refuses, it is a bug of ours.\nconst BUILTIN_ERROR = /^(?:TypeError|RangeError): /;\n\n// A parse error in edit code is thrown by the AsyncFunction constructor that runEditCode calls.\nconst MODEL_PARSE =\n /^\\s*at new AsyncFunction \\(<anonymous>\\)\\n\\s*at (?:async )?runEditCode /;\n\nconst sourceFrames = (stack: string | undefined): string[] =>\n stack\n ?.split('\\n')\n .filter(\n (line) =>\n line.trimStart().startsWith('at ') &&\n !/\\((?:<anonymous>|native)\\)$|[( ]node:|[( ]wasm:\\/\\//.test(line)\n ) ?? [];\n\nconst callerOf = (frames: string[]): string | undefined =>\n frames.find(\n (f) =>\n !ENGINE_FRAME.test(f) &&\n !SCENE_PATCH_FRAME.test(f) &&\n !(EDIT_CODE_FRAME.test(f) && !f.includes('runEditCode'))\n );\n\nexport function throwSite(stack: string | undefined): ThrowSite {\n const frames = stack?.slice(stack.indexOf('\\n at ') + 1);\n if (frames !== undefined && MODEL_PARSE.test(frames)) return 'model';\n const all = sourceFrames(stack);\n const top = all[0];\n if (top === undefined) return 'unknown';\n if (ENGINE_FRAME.test(top)) {\n const caller = callerOf(all);\n const builtin = BUILTIN_ERROR.test(stack ?? '');\n const refused =\n ARGUMENT_ERROR.test(stack ?? '') ||\n (EDIT_SCOPE_FRAME.test(top) && builtin);\n if (refused && caller !== undefined && MODEL_FRAME.test(caller))\n return 'model';\n // The text helpers and the facade are our code, not the engine's: stable must still hear of them.\n return EDIT_SCOPE_FRAME.test(top) || (FACADE_FRAME.test(top) && builtin)\n ? 'unknown'\n : 'engine';\n }\n if (MODEL_FRAME.test(top)) return 'model';\n return 'unknown';\n}\n\n// Looks past engine and design-layer frames to who called them.\nexport function thrownByModel(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n const caller = callerOf(sourceFrames(err.stack));\n return caller !== undefined && MODEL_FRAME.test(caller);\n}\n\nexport function reportable(\n report: ToolCallReport,\n channel: Channel = CHANNEL\n): { fault: 'ours' | 'engine' | 'agent' } | undefined {\n if (report.succeeded) return undefined;\n const code = report.errorCode;\n if (code === undefined) return report.error ? { fault: 'ours' } : undefined;\n if (code === 'code_threw' && isDesignErrorCode(report.errorDetail)) {\n const fault =\n report.errorDetail === 'DESIGN.ENGINE' &&\n ENGINE_MODEL_MISTAKE.has(report.designError?.engineCode ?? '')\n ? 'agent'\n : DESIGN_FAULT[report.errorDetail];\n if (fault === 'engine')\n return channel !== 'stable' ? { fault: 'engine' } : undefined;\n return fault === 'ours' || fault === 'agent' ? { fault } : undefined;\n }\n if (code === 'code_threw') {\n const stack = report.error?.stack;\n const caller = callerOf(sourceFrames(stack));\n if (\n ENGINE_MODEL_MISTAKE.has(report.errorDetail ?? '') ||\n (RAW_MODEL_MISTAKE.has(report.errorDetail ?? '') &&\n caller !== undefined &&\n MODEL_FRAME.test(caller))\n )\n return { fault: 'agent' };\n const site = throwSite(stack);\n if (site === 'engine')\n return channel !== 'stable' ? { fault: 'engine' } : undefined;\n if (site === 'unknown' && stack !== undefined) return { fault: 'ours' };\n }\n const fault = ERROR_FAULT[code];\n return fault === 'ours' || fault === 'agent' ? { fault } : undefined;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/codesign-server",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "private": true,
5
5
  "description": "The CoDesign Server: the design unit's tools, instructions and skills, and the host services (viewer, workspace, sign-in, diagnostics, telemetry, engine).",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -37,8 +37,8 @@
37
37
  "test:video": "vitest --run --config vitest.video.config.ts"
38
38
  },
39
39
  "dependencies": {
40
- "@imgly/codesign-agent": "0.5.1",
41
- "@imgly/codesign-router": "0.5.1",
40
+ "@imgly/codesign-agent": "0.6.0",
41
+ "@imgly/codesign-router": "0.6.0",
42
42
  "@imgly/codesign-sdk": "1.85.0",
43
43
  "@imgly/html-exporter": "0.2.0"
44
44
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/design-lint",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Design linter for CE.SDK scenes: rule engine, diagnostics, safe autofixes.",
5
5
  "private": true,
6
6
  "type": "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/codesign-mcp",
3
- "version": "0.6.0-next.20261104145605.ge4efbda",
3
+ "version": "0.6.0",
4
4
  "description": "A real design engine for your AI agent: generate designs, print-ready PDFs and videos with audio, over MCP.",
5
5
  "keywords": [
6
6
  "mcp",
@@ -98,12 +98,12 @@
98
98
  "@earendil-works/chord": "1.4.0",
99
99
  "@earendil-works/pi-ai": "1.4.0",
100
100
  "@earendil-works/pi-durable": "1.4.0",
101
- "@imgly/codesign-acp": "0.5.1",
102
- "@imgly/codesign-agent": "0.5.1",
103
- "@imgly/codesign-router": "0.5.1",
101
+ "@imgly/codesign-acp": "0.6.0",
102
+ "@imgly/codesign-agent": "0.6.0",
103
+ "@imgly/codesign-router": "0.6.0",
104
104
  "@imgly/codesign-sdk": "1.85.0",
105
- "@imgly/codesign-server": "0.5.1",
106
- "@imgly/design-lint": "0.5.1",
105
+ "@imgly/codesign-server": "0.6.0",
106
+ "@imgly/design-lint": "0.6.0",
107
107
  "@imgly/html-exporter": "0.2.0",
108
108
  "@imgly/idml-exporter": "0.1.0",
109
109
  "@imgly/idml-importer": "2.0.2",