@framers/agentos 0.9.33 → 0.9.35

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 (94) hide show
  1. package/README.md +28 -5
  2. package/dist/api/agent.d.ts +2 -0
  3. package/dist/api/agent.d.ts.map +1 -1
  4. package/dist/api/agent.js +12 -2
  5. package/dist/api/agent.js.map +1 -1
  6. package/dist/api/segment.d.ts +14 -0
  7. package/dist/api/segment.d.ts.map +1 -0
  8. package/dist/api/segment.js +42 -0
  9. package/dist/api/segment.js.map +1 -0
  10. package/dist/api/souledAgent.d.ts +18 -0
  11. package/dist/api/souledAgent.d.ts.map +1 -0
  12. package/dist/api/souledAgent.js +86 -0
  13. package/dist/api/souledAgent.js.map +1 -0
  14. package/dist/cognition/memory/io/attachMemoryWiki.d.ts +70 -0
  15. package/dist/cognition/memory/io/attachMemoryWiki.d.ts.map +1 -0
  16. package/dist/cognition/memory/io/attachMemoryWiki.js +65 -0
  17. package/dist/cognition/memory/io/attachMemoryWiki.js.map +1 -0
  18. package/dist/cognition/memory/io/facade/Memory.d.ts +31 -0
  19. package/dist/cognition/memory/io/facade/Memory.d.ts.map +1 -1
  20. package/dist/cognition/memory/io/facade/Memory.js +62 -1
  21. package/dist/cognition/memory/io/facade/Memory.js.map +1 -1
  22. package/dist/cognition/memory/io/tools/ReadMemoryPageTool.d.ts +39 -0
  23. package/dist/cognition/memory/io/tools/ReadMemoryPageTool.d.ts.map +1 -0
  24. package/dist/cognition/memory/io/tools/ReadMemoryPageTool.js +39 -0
  25. package/dist/cognition/memory/io/tools/ReadMemoryPageTool.js.map +1 -0
  26. package/dist/cognition/substrate/memory/wiki/WikiCompiler.d.ts +35 -0
  27. package/dist/cognition/substrate/memory/wiki/WikiCompiler.d.ts.map +1 -0
  28. package/dist/cognition/substrate/memory/wiki/WikiCompiler.js +51 -0
  29. package/dist/cognition/substrate/memory/wiki/WikiCompiler.js.map +1 -0
  30. package/dist/cognition/substrate/memory/wiki/WikiMemoryStore.d.ts +47 -0
  31. package/dist/cognition/substrate/memory/wiki/WikiMemoryStore.d.ts.map +1 -0
  32. package/dist/cognition/substrate/memory/wiki/WikiMemoryStore.js +169 -0
  33. package/dist/cognition/substrate/memory/wiki/WikiMemoryStore.js.map +1 -0
  34. package/dist/cognition/substrate/memory/wiki/WikiPageCodec.d.ts +10 -0
  35. package/dist/cognition/substrate/memory/wiki/WikiPageCodec.d.ts.map +1 -0
  36. package/dist/cognition/substrate/memory/wiki/WikiPageCodec.js +75 -0
  37. package/dist/cognition/substrate/memory/wiki/WikiPageCodec.js.map +1 -0
  38. package/dist/cognition/substrate/memory/wiki/index.d.ts +7 -0
  39. package/dist/cognition/substrate/memory/wiki/index.d.ts.map +1 -0
  40. package/dist/cognition/substrate/memory/wiki/index.js +7 -0
  41. package/dist/cognition/substrate/memory/wiki/index.js.map +1 -0
  42. package/dist/cognition/substrate/memory/wiki/migrateMemoryMd.d.ts +16 -0
  43. package/dist/cognition/substrate/memory/wiki/migrateMemoryMd.d.ts.map +1 -0
  44. package/dist/cognition/substrate/memory/wiki/migrateMemoryMd.js +42 -0
  45. package/dist/cognition/substrate/memory/wiki/migrateMemoryMd.js.map +1 -0
  46. package/dist/cognition/substrate/memory/wiki/types.d.ts +47 -0
  47. package/dist/cognition/substrate/memory/wiki/types.d.ts.map +1 -0
  48. package/dist/cognition/substrate/memory/wiki/types.js +6 -0
  49. package/dist/cognition/substrate/memory/wiki/types.js.map +1 -0
  50. package/dist/cognition/substrate/personas/SoulLoader.d.ts +6 -2
  51. package/dist/cognition/substrate/personas/SoulLoader.d.ts.map +1 -1
  52. package/dist/cognition/substrate/personas/SoulLoader.js +11 -0
  53. package/dist/cognition/substrate/personas/SoulLoader.js.map +1 -1
  54. package/dist/index.d.ts +10 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +7 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/io/segmentation/SegmentationProviderRegistry.d.ts +12 -0
  59. package/dist/io/segmentation/SegmentationProviderRegistry.d.ts.map +1 -0
  60. package/dist/io/segmentation/SegmentationProviderRegistry.js +39 -0
  61. package/dist/io/segmentation/SegmentationProviderRegistry.js.map +1 -0
  62. package/dist/io/segmentation/consumers/cropRegion.d.ts +16 -0
  63. package/dist/io/segmentation/consumers/cropRegion.d.ts.map +1 -0
  64. package/dist/io/segmentation/consumers/cropRegion.js +41 -0
  65. package/dist/io/segmentation/consumers/cropRegion.js.map +1 -0
  66. package/dist/io/segmentation/consumers/maskToEditMask.d.ts +19 -0
  67. package/dist/io/segmentation/consumers/maskToEditMask.d.ts.map +1 -0
  68. package/dist/io/segmentation/consumers/maskToEditMask.js +32 -0
  69. package/dist/io/segmentation/consumers/maskToEditMask.js.map +1 -0
  70. package/dist/io/segmentation/errors.d.ts +32 -0
  71. package/dist/io/segmentation/errors.d.ts.map +1 -0
  72. package/dist/io/segmentation/errors.js +29 -0
  73. package/dist/io/segmentation/errors.js.map +1 -0
  74. package/dist/io/segmentation/index.d.ts +13 -0
  75. package/dist/io/segmentation/index.d.ts.map +1 -0
  76. package/dist/io/segmentation/index.js +13 -0
  77. package/dist/io/segmentation/index.js.map +1 -0
  78. package/dist/io/segmentation/maskGeometry.d.ts +13 -0
  79. package/dist/io/segmentation/maskGeometry.d.ts.map +1 -0
  80. package/dist/io/segmentation/maskGeometry.js +37 -0
  81. package/dist/io/segmentation/maskGeometry.js.map +1 -0
  82. package/dist/io/segmentation/providers/ReplicateSegmentationProvider.d.ts +29 -0
  83. package/dist/io/segmentation/providers/ReplicateSegmentationProvider.d.ts.map +1 -0
  84. package/dist/io/segmentation/providers/ReplicateSegmentationProvider.js +233 -0
  85. package/dist/io/segmentation/providers/ReplicateSegmentationProvider.js.map +1 -0
  86. package/dist/io/segmentation/resolveMode.d.ts +14 -0
  87. package/dist/io/segmentation/resolveMode.d.ts.map +1 -0
  88. package/dist/io/segmentation/resolveMode.js +28 -0
  89. package/dist/io/segmentation/resolveMode.js.map +1 -0
  90. package/dist/io/segmentation/types.d.ts +134 -0
  91. package/dist/io/segmentation/types.d.ts.map +1 -0
  92. package/dist/io/segmentation/types.js +14 -0
  93. package/dist/io/segmentation/types.js.map +1 -0
  94. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -97,6 +97,10 @@ export * from './cognition/rag/index.js';
97
97
  export { DEFAULT_MEMORY_RETRIEVAL_POLICY, buildRetrievalPlanFromPolicy, getCandidateLimit, resolveMemoryRetrievalPolicy, } from './cognition/rag/unified/policy.js';
98
98
  // Cognitive Memory System
99
99
  export * from './cognition/memory/index.js';
100
+ // Memory Wiki — markdown-first long-term memory for soul-file agents
101
+ export { WikiMemoryStore, WikiCompiler, ensureMemoryDir, parsePage, serializePage, renderCatalog, extractWikiLinks, WIKI_PAGE_TYPES, isWikiPageType, } from './cognition/substrate/memory/wiki/index.js';
102
+ export { attachMemoryWiki } from './cognition/memory/io/attachMemoryWiki.js';
103
+ export { ReadMemoryPageTool } from './cognition/memory/io/tools/ReadMemoryPageTool.js';
100
104
  // Query Router (classification, retrieval dispatch, grounded answer generation)
101
105
  export { QueryClassifier, QueryDispatcher, QueryGenerator, QueryRouter, TopicExtractor, KeywordFallback, } from './orchestration/pipeline/query/index.js';
102
106
  // Orchestration Layer (IR, Events, Checkpoint, Runtime)
@@ -114,6 +118,7 @@ export { generateText, isRetryableError, isContentPolicyRefusal, buildFallbackCh
114
118
  export { normalizeHostLLMPolicy } from './api/runtime/hostPolicy.js';
115
119
  export { streamText } from './api/streamText.js';
116
120
  export { agent } from './api/agent.js';
121
+ export { souledAgent } from './api/souledAgent.js';
117
122
  export { ModelRouter } from './core/llm/routing/ModelRouter.js';
118
123
  export { agency, runPostApprovalGuardrails } from './api/agency.js';
119
124
  export { exportAgentConfig, exportAgentConfigJSON, exportAgentConfigYAML, importAgent, importAgentFromJSON, importAgentFromYAML, validateAgentExport, } from './api/agentExport.js';
@@ -127,6 +132,8 @@ export { generateImage } from './api/generateImage.js';
127
132
  export { editImage } from './api/editImage.js';
128
133
  export { upscaleImage } from './api/upscaleImage.js';
129
134
  export { variateImage } from './api/variateImage.js';
135
+ export { segment } from './api/segment.js';
136
+ export { maskToEditMask, cropRegion, ReplicateSegmentationProvider, registerSegmentationProvider, resolveSegmentationProvider, resetSegmentationProviders, SegmentationModeNotSupportedError, InvalidSegmentationPromptError, SegmentationProviderError, } from './io/segmentation/index.js';
130
137
  export { generateVideo } from './api/generateVideo.js';
131
138
  export { generateMusic } from './api/generateMusic.js';
132
139
  export { generateSFX } from './api/generateSFX.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ISegmentationProvider, SegmentationProviderId } from './types.js';
2
+ /** Register (or override) a provider instance. */
3
+ export declare function registerSegmentationProvider(id: string, provider: ISegmentationProvider): void;
4
+ /** Clear all cached/registered instances. */
5
+ export declare function resetSegmentationProviders(): void;
6
+ /**
7
+ * Resolve a provider, lazily constructing built-ins from env on first use.
8
+ *
9
+ * @throws when the provider id is unknown or required configuration is missing.
10
+ */
11
+ export declare function resolveSegmentationProvider(id?: SegmentationProviderId): Promise<ISegmentationProvider>;
12
+ //# sourceMappingURL=SegmentationProviderRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentationProviderRegistry.d.ts","sourceRoot":"","sources":["../../../src/io/segmentation/SegmentationProviderRegistry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAIhF,kDAAkD;AAClD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAE9F;AAED,6CAA6C;AAC7C,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,EAAE,GAAE,sBAAoC,GACvC,OAAO,CAAC,qBAAqB,CAAC,CAgBhC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @module io/segmentation/SegmentationProviderRegistry
3
+ *
4
+ * Resolves segmentation providers by id, lazily constructing built-ins from
5
+ * environment configuration on first use. Custom providers and tests can
6
+ * inject instances via {@link registerSegmentationProvider}.
7
+ */
8
+ import { ReplicateSegmentationProvider } from './providers/ReplicateSegmentationProvider.js';
9
+ const instances = new Map();
10
+ /** Register (or override) a provider instance. */
11
+ export function registerSegmentationProvider(id, provider) {
12
+ instances.set(id, provider);
13
+ }
14
+ /** Clear all cached/registered instances. */
15
+ export function resetSegmentationProviders() {
16
+ instances.clear();
17
+ }
18
+ /**
19
+ * Resolve a provider, lazily constructing built-ins from env on first use.
20
+ *
21
+ * @throws when the provider id is unknown or required configuration is missing.
22
+ */
23
+ export async function resolveSegmentationProvider(id = 'replicate') {
24
+ const existing = instances.get(id);
25
+ if (existing)
26
+ return existing;
27
+ if (id === 'replicate') {
28
+ const apiKey = process.env.REPLICATE_API_TOKEN?.trim();
29
+ if (!apiKey) {
30
+ throw new Error('Segmentation provider "replicate" requires REPLICATE_API_TOKEN.');
31
+ }
32
+ const provider = new ReplicateSegmentationProvider();
33
+ await provider.initialize({ apiKey });
34
+ instances.set(id, provider);
35
+ return provider;
36
+ }
37
+ throw new Error(`Unknown segmentation provider "${id}".`);
38
+ }
39
+ //# sourceMappingURL=SegmentationProviderRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentationProviderRegistry.js","sourceRoot":"","sources":["../../../src/io/segmentation/SegmentationProviderRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAG7F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE3D,kDAAkD;AAClD,MAAM,UAAU,4BAA4B,CAAC,EAAU,EAAE,QAA+B;IACtF,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,0BAA0B;IACxC,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAA6B,WAAW;IAExC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,6BAA6B,EAAE,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module io/segmentation/consumers/cropRegion
3
+ */
4
+ import type { SegmentMask } from '../types.js';
5
+ /**
6
+ * Apply a mask as the alpha channel of the source image and crop to the mask's
7
+ * bbox, producing a transparent cutout (sprite primitive / CLIP-embed input).
8
+ *
9
+ * @param opts.pad pixels to expand the crop on each side (default 0)
10
+ * @param opts.background `'transparent'` (default) keeps alpha; `'opaque'` flattens to black
11
+ */
12
+ export declare function cropRegion(source: Buffer | Uint8Array | string, mask: SegmentMask, opts?: {
13
+ pad?: number;
14
+ background?: 'transparent' | 'opaque';
15
+ }): Promise<Buffer>;
16
+ //# sourceMappingURL=cropRegion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropRegion.d.ts","sourceRoot":"","sources":["../../../../src/io/segmentation/consumers/cropRegion.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EACpC,IAAI,EAAE,WAAW,EACjB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAA;CAAO,GACjE,OAAO,CAAC,MAAM,CAAC,CAqCjB"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Apply a mask as the alpha channel of the source image and crop to the mask's
3
+ * bbox, producing a transparent cutout (sprite primitive / CLIP-embed input).
4
+ *
5
+ * @param opts.pad pixels to expand the crop on each side (default 0)
6
+ * @param opts.background `'transparent'` (default) keeps alpha; `'opaque'` flattens to black
7
+ */
8
+ export async function cropRegion(source, mask, opts = {}) {
9
+ const sharp = (await import('sharp')).default;
10
+ const srcBuf = typeof source === 'string' ? source : Buffer.isBuffer(source) ? source : Buffer.from(source);
11
+ const meta = await sharp(srcBuf).metadata();
12
+ const W = meta.width ?? 0;
13
+ const H = meta.height ?? 0;
14
+ const pad = opts.pad ?? 0;
15
+ // Mask luma -> single-channel alpha, resized to source dimensions.
16
+ const alpha = await sharp(mask.mask)
17
+ .resize(W, H, { fit: 'fill' })
18
+ .greyscale()
19
+ .toColourspace('b-w')
20
+ .raw()
21
+ .toBuffer();
22
+ // Source RGB (raw) + joined alpha channel -> RGBA.
23
+ const rgb = await sharp(srcBuf).removeAlpha().toColourspace('srgb').raw().toBuffer();
24
+ const rgba = await sharp(rgb, { raw: { width: W, height: H, channels: 3 } })
25
+ .joinChannel(alpha, { raw: { width: W, height: H, channels: 1 } })
26
+ .png()
27
+ .toBuffer();
28
+ // Clamp each edge independently so padding near an image boundary does not
29
+ // overshoot the opposite edge.
30
+ const left = Math.max(0, mask.bbox.x - pad);
31
+ const top = Math.max(0, mask.bbox.y - pad);
32
+ const right = Math.min(W, mask.bbox.x + mask.bbox.width + pad);
33
+ const bottom = Math.min(H, mask.bbox.y + mask.bbox.height + pad);
34
+ const w = right - left;
35
+ const h = bottom - top;
36
+ let out = sharp(rgba).extract({ left, top, width: w, height: h });
37
+ if (opts.background === 'opaque')
38
+ out = out.flatten({ background: { r: 0, g: 0, b: 0 } });
39
+ return out.png().toBuffer();
40
+ }
41
+ //# sourceMappingURL=cropRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropRegion.js","sourceRoot":"","sources":["../../../../src/io/segmentation/consumers/cropRegion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @module io/segmentation/consumers/maskToEditMask
3
+ */
4
+ import type { SegmentMask } from '../types.js';
5
+ /**
6
+ * Combine one or more segmentation masks into a single mask Buffer suitable for
7
+ * `editImage()`'s `mask` input (white = edit region, black = keep).
8
+ *
9
+ * @param masks one mask or many (unioned)
10
+ * @param opts.target `'object'` (default) edits the masked object; `'background'`
11
+ * inverts so everything except the object is edited.
12
+ * @param opts.width/height optional canvas size; defaults to the first mask's.
13
+ */
14
+ export declare function maskToEditMask(masks: SegmentMask | SegmentMask[], opts?: {
15
+ target?: 'object' | 'background';
16
+ width?: number;
17
+ height?: number;
18
+ }): Promise<Buffer>;
19
+ //# sourceMappingURL=maskToEditMask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maskToEditMask.d.ts","sourceRoot":"","sources":["../../../../src/io/segmentation/consumers/maskToEditMask.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,EAClC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/E,OAAO,CAAC,MAAM,CAAC,CAyBjB"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Combine one or more segmentation masks into a single mask Buffer suitable for
3
+ * `editImage()`'s `mask` input (white = edit region, black = keep).
4
+ *
5
+ * @param masks one mask or many (unioned)
6
+ * @param opts.target `'object'` (default) edits the masked object; `'background'`
7
+ * inverts so everything except the object is edited.
8
+ * @param opts.width/height optional canvas size; defaults to the first mask's.
9
+ */
10
+ export async function maskToEditMask(masks, opts = {}) {
11
+ const sharp = (await import('sharp')).default;
12
+ const list = Array.isArray(masks) ? masks : [masks];
13
+ if (list.length === 0)
14
+ throw new Error('maskToEditMask requires at least one mask.');
15
+ const first = await sharp(list[0].mask).metadata();
16
+ const width = opts.width ?? first.width ?? 0;
17
+ const height = opts.height ?? first.height ?? 0;
18
+ if (width <= 0 || height <= 0) {
19
+ throw new Error('maskToEditMask: could not determine mask dimensions; pass opts.width and opts.height.');
20
+ }
21
+ const layers = await Promise.all(list.map(async (m) => ({
22
+ input: await sharp(m.mask).resize(width, height, { fit: 'fill' }).greyscale().png().toBuffer(),
23
+ blend: 'screen', // white-on-black union
24
+ })));
25
+ let composed = sharp({ create: { width, height, channels: 3, background: { r: 0, g: 0, b: 0 } } })
26
+ .composite(layers)
27
+ .greyscale();
28
+ if (opts.target === 'background')
29
+ composed = composed.negate();
30
+ return composed.png().toBuffer();
31
+ }
32
+ //# sourceMappingURL=maskToEditMask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maskToEditMask.js","sourceRoot":"","sources":["../../../../src/io/segmentation/consumers/maskToEditMask.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAkC,EAClC,OAA8E,EAAE;IAEhF,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAErF,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrB,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAC9F,KAAK,EAAE,QAAiB,EAAE,uBAAuB;KAClD,CAAC,CAAC,CACJ,CAAC;IAEF,IAAI,QAAQ,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;SAC/F,SAAS,CAAC,MAAM,CAAC;SACjB,SAAS,EAAE,CAAC;IAEf,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;QAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/D,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module io/segmentation/errors
3
+ * Typed error classes for the segmentation surface. Callers can catch by class
4
+ * to branch on the failure cause.
5
+ */
6
+ import type { SegmentationMode } from './types.js';
7
+ /**
8
+ * Thrown before any network call when the resolved provider does not support
9
+ * the requested prompt mode.
10
+ */
11
+ export declare class SegmentationModeNotSupportedError extends Error {
12
+ /** The provider that was asked to segment. */
13
+ readonly providerId: string;
14
+ /** The unsupported mode. */
15
+ readonly mode: SegmentationMode;
16
+ constructor(providerId: string, mode: SegmentationMode);
17
+ }
18
+ /** Thrown when zero or more than one prompt mode is supplied. */
19
+ export declare class InvalidSegmentationPromptError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ /** Discriminates the kind of provider-level failure. */
23
+ export type SegmentationErrorCode = 'provider_failed' | 'timeout' | 'invalid_request';
24
+ /** Wraps provider/network failures and poll timeouts. */
25
+ export declare class SegmentationProviderError extends Error {
26
+ /** Failure category. */
27
+ readonly code: SegmentationErrorCode;
28
+ /** Underlying cause, when one exists. */
29
+ readonly cause?: unknown;
30
+ constructor(message: string, code: SegmentationErrorCode, cause?: unknown);
31
+ }
32
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/io/segmentation/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;GAGG;AACH,qBAAa,iCAAkC,SAAQ,KAAK;IAC1D,8CAA8C;IAC9C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,4BAA4B;IAC5B,SAAgB,IAAI,EAAE,gBAAgB,CAAC;gBAE3B,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;CAMvD;AAED,iEAAiE;AACjE,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,wDAAwD;AACxD,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAEtF,yDAAyD;AACzD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,wBAAwB;IACxB,SAAgB,IAAI,EAAE,qBAAqB,CAAC;IAC5C,yCAAyC;IACzC,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO;CAM1E"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Thrown before any network call when the resolved provider does not support
3
+ * the requested prompt mode.
4
+ */
5
+ export class SegmentationModeNotSupportedError extends Error {
6
+ constructor(providerId, mode) {
7
+ super(`Segmentation mode "${mode}" is not supported by provider "${providerId}".`);
8
+ this.name = 'SegmentationModeNotSupportedError';
9
+ this.providerId = providerId;
10
+ this.mode = mode;
11
+ }
12
+ }
13
+ /** Thrown when zero or more than one prompt mode is supplied. */
14
+ export class InvalidSegmentationPromptError extends Error {
15
+ constructor(message) {
16
+ super(message);
17
+ this.name = 'InvalidSegmentationPromptError';
18
+ }
19
+ }
20
+ /** Wraps provider/network failures and poll timeouts. */
21
+ export class SegmentationProviderError extends Error {
22
+ constructor(message, code, cause) {
23
+ super(message);
24
+ this.name = 'SegmentationProviderError';
25
+ this.code = code;
26
+ this.cause = cause;
27
+ }
28
+ }
29
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/io/segmentation/errors.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IAM1D,YAAY,UAAkB,EAAE,IAAsB;QACpD,KAAK,CAAC,sBAAsB,IAAI,mCAAmC,UAAU,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AAKD,yDAAyD;AACzD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAMlD,YAAY,OAAe,EAAE,IAA2B,EAAE,KAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @module io/segmentation
3
+ * Public barrel for the image segmentation surface.
4
+ */
5
+ export * from './types.js';
6
+ export * from './errors.js';
7
+ export { resolveSegmentationMode } from './resolveMode.js';
8
+ export { computeMaskBbox } from './maskGeometry.js';
9
+ export { ReplicateSegmentationProvider } from './providers/ReplicateSegmentationProvider.js';
10
+ export { resolveSegmentationProvider, registerSegmentationProvider, resetSegmentationProviders, } from './SegmentationProviderRegistry.js';
11
+ export { maskToEditMask } from './consumers/maskToEditMask.js';
12
+ export { cropRegion } from './consumers/cropRegion.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/io/segmentation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @module io/segmentation
3
+ * Public barrel for the image segmentation surface.
4
+ */
5
+ export * from './types.js';
6
+ export * from './errors.js';
7
+ export { resolveSegmentationMode } from './resolveMode.js';
8
+ export { computeMaskBbox } from './maskGeometry.js';
9
+ export { ReplicateSegmentationProvider } from './providers/ReplicateSegmentationProvider.js';
10
+ export { resolveSegmentationProvider, registerSegmentationProvider, resetSegmentationProviders, } from './SegmentationProviderRegistry.js';
11
+ export { maskToEditMask } from './consumers/maskToEditMask.js';
12
+ export { cropRegion } from './consumers/cropRegion.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/io/segmentation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @module io/segmentation/maskGeometry
3
+ */
4
+ import type { SegmentationBox } from './types.js';
5
+ /**
6
+ * Compute the tight bounding box of the white (luma >= 128) pixels in a mask.
7
+ * Returns `null` when the mask has no white pixels.
8
+ *
9
+ * sharp is loaded lazily, matching the guarded dynamic-import pattern used by
10
+ * the vision pipeline (src/io/vision/VisionPipeline.ts).
11
+ */
12
+ export declare function computeMaskBbox(maskPng: Buffer): Promise<SegmentationBox | null>;
13
+ //# sourceMappingURL=maskGeometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maskGeometry.d.ts","sourceRoot":"","sources":["../../../src/io/segmentation/maskGeometry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAwBtF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Compute the tight bounding box of the white (luma >= 128) pixels in a mask.
3
+ * Returns `null` when the mask has no white pixels.
4
+ *
5
+ * sharp is loaded lazily, matching the guarded dynamic-import pattern used by
6
+ * the vision pipeline (src/io/vision/VisionPipeline.ts).
7
+ */
8
+ export async function computeMaskBbox(maskPng) {
9
+ const sharp = (await import('sharp')).default;
10
+ const { data, info } = await sharp(maskPng)
11
+ .greyscale()
12
+ .raw()
13
+ .toBuffer({ resolveWithObject: true });
14
+ const { width, height, channels } = info;
15
+ let minX = width;
16
+ let minY = height;
17
+ let maxX = -1;
18
+ let maxY = -1;
19
+ for (let y = 0; y < height; y++) {
20
+ for (let x = 0; x < width; x++) {
21
+ if (data[(y * width + x) * channels] >= 128) {
22
+ if (x < minX)
23
+ minX = x;
24
+ if (y < minY)
25
+ minY = y;
26
+ if (x > maxX)
27
+ maxX = x;
28
+ if (y > maxY)
29
+ maxY = y;
30
+ }
31
+ }
32
+ }
33
+ if (maxX < 0)
34
+ return null;
35
+ return { x: minX, y: minY, width: maxX - minX + 1, height: maxY - minY + 1 };
36
+ }
37
+ //# sourceMappingURL=maskGeometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maskGeometry.js","sourceRoot":"","sources":["../../../src/io/segmentation/maskGeometry.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;SACxC,SAAS,EAAE;SACX,GAAG,EAAE;SACL,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,IAAI,GAAG,MAAM,CAAC;IAClB,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC5C,IAAI,CAAC,GAAG,IAAI;oBAAE,IAAI,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,GAAG,IAAI;oBAAE,IAAI,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,GAAG,IAAI;oBAAE,IAAI,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,GAAG,IAAI;oBAAE,IAAI,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { ISegmentationProvider, SegmentationMode, SegmentationRequest, SegmentationResult } from '../types.js';
2
+ export declare class ReplicateSegmentationProvider implements ISegmentationProvider {
3
+ readonly providerId = "replicate";
4
+ isInitialized: boolean;
5
+ defaultModelId?: string;
6
+ private keyPool;
7
+ private readonly versionCache;
8
+ initialize(config: Record<string, unknown>): Promise<void>;
9
+ supportedModes(): ReadonlyArray<SegmentationMode>;
10
+ segment(request: SegmentationRequest): Promise<SegmentationResult>;
11
+ /**
12
+ * Build the Replicate `input` object for the request's mode. Field names
13
+ * target the v1 output contract; confirm per chosen model in the smoke step.
14
+ */
15
+ private buildInput;
16
+ private headers;
17
+ private runPrediction;
18
+ /**
19
+ * Resolve a model id to a concrete version hash. An explicit
20
+ * `owner/name:version` pin is used directly; a bare `owner/name` is looked up
21
+ * via the model API for its latest version (cached per provider instance).
22
+ */
23
+ private resolveVersion;
24
+ private extractMaskRefs;
25
+ private fetchMaskBytes;
26
+ private decodeMasks;
27
+ private imageDimensions;
28
+ }
29
+ //# sourceMappingURL=ReplicateSegmentationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplicateSegmentationProvider.d.ts","sourceRoot":"","sources":["../../../../src/io/segmentation/providers/ReplicateSegmentationProvider.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,qBAAqB,EAErB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAsBrB,qBAAa,6BAA8B,YAAW,qBAAqB;IACzE,SAAgB,UAAU,eAAe;IAClC,aAAa,UAAS;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAEpD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE,cAAc,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAO3C,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6DxE;;;OAGG;IACH,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,OAAO;YAID,aAAa;IAqC3B;;;;OAIG;YACW,cAAc;IA2B5B,OAAO,CAAC,eAAe;YAcT,cAAc;YAWd,WAAW;YAwBX,eAAe;CAK9B"}