@almadar/std 14.44.0 → 14.45.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.
- package/dist/behaviors/embeddings.d.ts +42 -0
- package/dist/behaviors/embeddings.js +32 -0
- package/dist/behaviors/embeddings.js.map +1 -0
- package/dist/behaviors/index.d.ts +1 -0
- package/dist/behaviors/index.js +30 -1
- package/dist/behaviors/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +30 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Behavior Embeddings — typed loader for the publish-time-baked
|
|
3
|
+
* `behaviors-embeddings.json` artifact.
|
|
4
|
+
*
|
|
5
|
+
* The catalog in `behaviors-registry.json` lists every organism + atom
|
|
6
|
+
* available in the std library. At publish time, `scripts/build-embeddings.ts`
|
|
7
|
+
* calls the OpenAI Embeddings API once per entry and writes the resulting
|
|
8
|
+
* vectors to `behaviors-embeddings.json`. Downstream consumers
|
|
9
|
+
* (`@almadar-io/agent` Stage A cosine retrieval) read these vectors at
|
|
10
|
+
* runtime to rank organisms / atoms against the user's request — top-K
|
|
11
|
+
* survives into the prompt, the rest is filtered out.
|
|
12
|
+
*
|
|
13
|
+
* One embedding bake per std publish. Runtime cost: one OpenAI embed call
|
|
14
|
+
* per Stage A turn (the user request); the catalog side is free.
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
interface BehaviorEmbeddingsManifest {
|
|
19
|
+
/** Std version at bake time. Matches `package.json` `version`. */
|
|
20
|
+
version: string;
|
|
21
|
+
/** Embedding model used (e.g. `text-embedding-3-small`). */
|
|
22
|
+
model: string;
|
|
23
|
+
/** Vector dimensionality (e.g. 1536 for text-embedding-3-small). */
|
|
24
|
+
dimensions: number;
|
|
25
|
+
/** Per-behavior vectors keyed by canonical name (matches registry keys). */
|
|
26
|
+
vectors: Record<string, readonly number[]>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Return the typed embeddings manifest. Returns `null` when the bake step
|
|
30
|
+
* hasn't run (dev workflow, unbundled std checkout without
|
|
31
|
+
* `pnpm run build:embeddings`). Consumers fall back to the full catalog
|
|
32
|
+
* walk in that case.
|
|
33
|
+
*/
|
|
34
|
+
declare function getBehaviorEmbeddings(): Promise<BehaviorEmbeddingsManifest | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Fetch the embedding vector for one behavior by name. Returns `null` when
|
|
37
|
+
* the manifest is missing OR the behavior wasn't indexed at bake time
|
|
38
|
+
* (e.g. a new atom landed after the most recent publish — bake again).
|
|
39
|
+
*/
|
|
40
|
+
declare function getBehaviorEmbedding(behaviorName: string): Promise<readonly number[] | null>;
|
|
41
|
+
|
|
42
|
+
export { type BehaviorEmbeddingsManifest, getBehaviorEmbedding, getBehaviorEmbeddings };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// behaviors/embeddings.ts
|
|
2
|
+
var cache = null;
|
|
3
|
+
async function loadManifest() {
|
|
4
|
+
if (cache) return cache;
|
|
5
|
+
try {
|
|
6
|
+
const { readFileSync } = await import('fs');
|
|
7
|
+
const { resolve, dirname } = await import('path');
|
|
8
|
+
const { fileURLToPath } = await import('url');
|
|
9
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const raw = readFileSync(resolve(dir, "behaviors-embeddings.json"), "utf-8");
|
|
11
|
+
const parsed = JSON.parse(raw);
|
|
12
|
+
if (typeof parsed?.version !== "string" || typeof parsed?.model !== "string" || typeof parsed?.dimensions !== "number" || !parsed?.vectors || typeof parsed.vectors !== "object") {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
cache = parsed;
|
|
16
|
+
return cache;
|
|
17
|
+
} catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function getBehaviorEmbeddings() {
|
|
22
|
+
return loadManifest();
|
|
23
|
+
}
|
|
24
|
+
async function getBehaviorEmbedding(behaviorName) {
|
|
25
|
+
const manifest = await loadManifest();
|
|
26
|
+
if (!manifest) return null;
|
|
27
|
+
return manifest.vectors[behaviorName] ?? null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { getBehaviorEmbedding, getBehaviorEmbeddings };
|
|
31
|
+
//# sourceMappingURL=embeddings.js.map
|
|
32
|
+
//# sourceMappingURL=embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../behaviors/embeddings.ts"],"names":[],"mappings":";AA6BA,IAAI,KAAA,GAA2C,IAAA;AAE/C,eAAe,YAAA,GAA2D;AACxE,EAAA,IAAI,OAAO,OAAO,KAAA;AAClB,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,YAAA,EAAa,GAAI,MAAM,OAAO,IAAI,CAAA;AAC1C,IAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,MAAM,OAAO,MAAM,CAAA;AAChD,IAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,KAAK,CAAA;AAC5C,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAClD,IAAA,MAAM,MAAM,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK,2BAA2B,GAAG,OAAO,CAAA;AAC3E,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,IAAA,IACE,OAAO,MAAA,EAAQ,OAAA,KAAY,YAC3B,OAAO,MAAA,EAAQ,UAAU,QAAA,IACzB,OAAO,MAAA,EAAQ,UAAA,KAAe,YAC9B,CAAC,MAAA,EAAQ,WACT,OAAO,MAAA,CAAO,YAAY,QAAA,EAC1B;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,KAAA,GAAQ,MAAA;AACR,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAQA,eAAsB,qBAAA,GAAoE;AACxF,EAAA,OAAO,YAAA,EAAa;AACtB;AAOA,eAAsB,qBAAqB,YAAA,EAAyD;AAClG,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,YAAY,CAAA,IAAK,IAAA;AAC3C","file":"embeddings.js","sourcesContent":["/**\n * Behavior Embeddings — typed loader for the publish-time-baked\n * `behaviors-embeddings.json` artifact.\n *\n * The catalog in `behaviors-registry.json` lists every organism + atom\n * available in the std library. At publish time, `scripts/build-embeddings.ts`\n * calls the OpenAI Embeddings API once per entry and writes the resulting\n * vectors to `behaviors-embeddings.json`. Downstream consumers\n * (`@almadar-io/agent` Stage A cosine retrieval) read these vectors at\n * runtime to rank organisms / atoms against the user's request — top-K\n * survives into the prompt, the rest is filtered out.\n *\n * One embedding bake per std publish. Runtime cost: one OpenAI embed call\n * per Stage A turn (the user request); the catalog side is free.\n *\n * @packageDocumentation\n */\n\nexport interface BehaviorEmbeddingsManifest {\n /** Std version at bake time. Matches `package.json` `version`. */\n version: string;\n /** Embedding model used (e.g. `text-embedding-3-small`). */\n model: string;\n /** Vector dimensionality (e.g. 1536 for text-embedding-3-small). */\n dimensions: number;\n /** Per-behavior vectors keyed by canonical name (matches registry keys). */\n vectors: Record<string, readonly number[]>;\n}\n\nlet cache: BehaviorEmbeddingsManifest | null = null;\n\nasync function loadManifest(): Promise<BehaviorEmbeddingsManifest | null> {\n if (cache) return cache;\n try {\n const { readFileSync } = await import('fs');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n const dir = dirname(fileURLToPath(import.meta.url));\n const raw = readFileSync(resolve(dir, 'behaviors-embeddings.json'), 'utf-8');\n const parsed = JSON.parse(raw) as BehaviorEmbeddingsManifest;\n if (\n typeof parsed?.version !== 'string' ||\n typeof parsed?.model !== 'string' ||\n typeof parsed?.dimensions !== 'number' ||\n !parsed?.vectors ||\n typeof parsed.vectors !== 'object'\n ) {\n return null;\n }\n cache = parsed;\n return cache;\n } catch {\n return null;\n }\n}\n\n/**\n * Return the typed embeddings manifest. Returns `null` when the bake step\n * hasn't run (dev workflow, unbundled std checkout without\n * `pnpm run build:embeddings`). Consumers fall back to the full catalog\n * walk in that case.\n */\nexport async function getBehaviorEmbeddings(): Promise<BehaviorEmbeddingsManifest | null> {\n return loadManifest();\n}\n\n/**\n * Fetch the embedding vector for one behavior by name. Returns `null` when\n * the manifest is missing OR the behavior wasn't indexed at bake time\n * (e.g. a new atom landed after the most recent publish — bake again).\n */\nexport async function getBehaviorEmbedding(behaviorName: string): Promise<readonly number[] | null> {\n const manifest = await loadManifest();\n if (!manifest) return null;\n return manifest.vectors[behaviorName] ?? null;\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { BehaviorMetadata, BehaviorTrait, ItemAction, getBehaviorMetadata, validateBehaviorEvents, validateBehaviorStates, validateBehaviorStructure } from './types.js';
|
|
2
2
|
export { BehaviorLevel, getAllBehaviorNames, getAllBehaviors, getBehavior, getBehaviorsByLevel, hasGoldenOrb, loadGoldenOrb } from './exports-reader.js';
|
|
3
3
|
export { BehaviorSummary, RegistryEntry, getBehaviorRegistry, getBehaviorSummary, getBehaviorsByDomain, getBehaviorsByOperations, searchBehaviors } from './query.js';
|
|
4
|
+
export { BehaviorEmbeddingsManifest, getBehaviorEmbedding, getBehaviorEmbeddings } from './embeddings.js';
|
|
4
5
|
export { StdCascadeOnDeleteCascadeCompletedPayload, StdCascadeOnDeleteCascadeFailedPayload, StdCascadeOnDeleteCascadeRowsFetchedPayload, StdCascadeOnDeleteCascadeRowsLoadedPayload, StdCascadeOnDeleteConfig, StdCascadeOnDeleteEventKey, StdCascadeOnDeleteParams, stdCascadeOnDelete, stdCascadeOnDeletePage, stdCascadeOnDeleteTrait } from './functions/index.js';
|
|
5
6
|
export { compose, connect, ensureIdField, extractTrait, makeEntity, makeOrbital, makePage, makeSchema, mergeOrbitals, pipe, plural, wire } from '@almadar/core/builders';
|
|
6
7
|
export { O as OrbitalParamsManifest, P as ParamFieldDescriptor, d as dispatchOrbitalFactory, g as getOrbitalFactoryManifest, l as listOrganismOrbitalManifests } from '../dispatch-x-qHdw0V.js';
|
package/dist/behaviors/index.js
CHANGED
|
@@ -357,6 +357,35 @@ function extractPatternTypes(node, patterns) {
|
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
|
|
360
|
+
// behaviors/embeddings.ts
|
|
361
|
+
var cache = null;
|
|
362
|
+
async function loadManifest() {
|
|
363
|
+
if (cache) return cache;
|
|
364
|
+
try {
|
|
365
|
+
const { readFileSync } = await import('fs');
|
|
366
|
+
const { resolve, dirname } = await import('path');
|
|
367
|
+
const { fileURLToPath } = await import('url');
|
|
368
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
369
|
+
const raw = readFileSync(resolve(dir, "behaviors-embeddings.json"), "utf-8");
|
|
370
|
+
const parsed = JSON.parse(raw);
|
|
371
|
+
if (typeof parsed?.version !== "string" || typeof parsed?.model !== "string" || typeof parsed?.dimensions !== "number" || !parsed?.vectors || typeof parsed.vectors !== "object") {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
cache = parsed;
|
|
375
|
+
return cache;
|
|
376
|
+
} catch {
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
async function getBehaviorEmbeddings() {
|
|
381
|
+
return loadManifest();
|
|
382
|
+
}
|
|
383
|
+
async function getBehaviorEmbedding(behaviorName) {
|
|
384
|
+
const manifest = await loadManifest();
|
|
385
|
+
if (!manifest) return null;
|
|
386
|
+
return manifest.vectors[behaviorName] ?? null;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export { dispatchOrbitalFactory, getAllBehaviorNames, getAllBehaviors, getBehavior, getBehaviorEmbedding, getBehaviorEmbeddings, getBehaviorMetadata, getBehaviorRegistry, getBehaviorSummary, getBehaviorsByDomain, getBehaviorsByLevel, getBehaviorsByOperations, getOrbitalFactoryManifest, hasGoldenOrb, listOrganismOrbitalManifests, loadGoldenOrb, searchBehaviors, stdCascadeOnDelete, stdCascadeOnDeletePage, stdCascadeOnDeleteTrait, validateBehaviorEvents, validateBehaviorStates, validateBehaviorStructure };
|
|
361
390
|
//# sourceMappingURL=index.js.map
|
|
362
391
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../behaviors/types.ts","../../behaviors/functions/index.ts","../../behaviors/functions/core/atoms/std-cascade-on-delete.ts","../../behaviors/functions/dispatch.ts","../../behaviors/exports-reader.ts","../../behaviors/query.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Standard Behaviors Types\n *\n * Standard Behaviors are reusable OrbitalSchema definitions with a `std-` naming convention.\n * Each behavior is a self-contained .orb file that can function independently.\n *\n * @packageDocumentation\n */\n\nimport type {\n SExpr,\n Effect,\n Expression,\n Trait,\n TraitCategory,\n StateMachine,\n State,\n Event,\n Transition,\n Guard,\n TraitTick,\n TraitDataEntity,\n TraitEntityField,\n OrbitalSchema,\n Orbital,\n Entity,\n} from '@almadar/core/types';\n\n// Re-export core types for use in behaviors\nexport type {\n Effect,\n Expression,\n Trait,\n StateMachine,\n State,\n Event,\n Transition,\n Guard,\n TraitTick,\n TraitDataEntity,\n TraitEntityField,\n TraitCategory,\n OrbitalSchema,\n Orbital,\n Entity,\n};\n\n// ============================================================================\n// Legacy Type Aliases (for backward compatibility only)\n// ============================================================================\n\n/**\n * @deprecated Use OrbitalSchema directly. BehaviorTrait is kept for backward compatibility.\n */\nexport type BehaviorTrait = Trait;\n\n// ============================================================================\n// Item Action (for render_ui props)\n// ============================================================================\n\nexport interface ItemAction {\n label: string;\n event?: string;\n navigatesTo?: string;\n placement?: 'row' | 'bulk' | 'card' | 'footer' | 'header';\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger';\n showWhen?: SExpr | string;\n}\n\n// ============================================================================\n// Behavior Metadata (for quick lookup and documentation)\n// ============================================================================\n\n/**\n * Behavior metadata extracted from a Trait for documentation purposes\n */\nexport interface BehaviorMetadata {\n name: string;\n category?: TraitCategory;\n description: string;\n states: string[];\n events: string[];\n tickCount: number;\n transitionCount: number;\n hasDataEntities: boolean;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Extract metadata from a BehaviorTrait for documentation\n */\nexport function getBehaviorMetadata(behavior: BehaviorTrait): BehaviorMetadata {\n const sm = behavior.stateMachine;\n\n // Core types: State is always an object with name\n const states: string[] = (sm?.states || []).map(s => s.name);\n\n // Core types: Event is always an object with key\n const events: string[] = (sm?.events || []).map(e => e.key);\n\n return {\n name: behavior.name,\n category: behavior.category,\n description: behavior.description || '',\n states,\n events,\n tickCount: behavior.ticks?.length || 0,\n transitionCount: sm?.transitions?.length || 0,\n hasDataEntities: (behavior.dataEntities?.length || 0) > 0,\n };\n}\n\n/**\n * Validate behavior structure\n */\nexport function validateBehaviorStructure(behavior: BehaviorTrait): string[] {\n const errors: string[] = [];\n\n if (!behavior.name) {\n errors.push('Behavior must have a name');\n }\n\n if (!behavior.name.startsWith('std/')) {\n errors.push(`Behavior name should start with 'std/' (got: ${behavior.name})`);\n }\n\n const sm = behavior.stateMachine;\n if (sm) {\n if (!sm.states || sm.states.length === 0) {\n errors.push('State machine must have at least one state');\n }\n\n // Core types: check initial state using isInitial flag on State\n const hasInitialState = sm.states?.some(s => s.isInitial);\n if (!hasInitialState) {\n errors.push('State machine must have an initial state (set isInitial: true on one state)');\n }\n }\n\n return errors;\n}\n\n/**\n * Validate behavior events match transitions\n */\nexport function validateBehaviorEvents(behavior: BehaviorTrait): string[] {\n const errors: string[] = [];\n const sm = behavior.stateMachine;\n if (!sm) return errors;\n\n // Core types: Event is always an object with key\n const declaredEvents = new Set(\n (sm.events || []).map(e => e.key)\n );\n\n const transitionEvents = new Set(\n (sm.transitions || []).map(t => t.event)\n );\n\n for (const event of transitionEvents) {\n if (event && !declaredEvents.has(event)) {\n errors.push(`Transition uses undeclared event: ${event}`);\n }\n }\n\n return errors;\n}\n\n/**\n * Validate behavior states match transitions\n */\nexport function validateBehaviorStates(behavior: BehaviorTrait): string[] {\n const errors: string[] = [];\n const sm = behavior.stateMachine;\n if (!sm) return errors;\n\n // Core types: State is always an object with name\n const declaredStates = new Set(\n (sm.states || []).map(s => s.name)\n );\n\n for (const t of sm.transitions || []) {\n // Core types: from and to are both strings\n if (t.from && !declaredStates.has(t.from)) {\n errors.push(`Transition from undeclared state: ${t.from}`);\n }\n\n if (t.to && !declaredStates.has(t.to)) {\n errors.push(`Transition to undeclared state: ${t.to}`);\n }\n }\n\n return errors;\n}\n","/**\n * Behavior Functions\n *\n * Autogenerated by scripts/regenerate-std-ts.mjs.\n * Thin descriptor layer over the .orb registry; the canonical state\n * machines live in packages/almadar-std/behaviors/registry/.\n *\n * Layout: <topic>/<tier>/std-X.ts (topic is any direct subdir of functions/).\n *\n * @packageDocumentation\n */\n\n// Atoms\nexport * from './core/atoms/std-cascade-on-delete.js';\n\n// Molecules\n\n// Organisms\n\n// Re-export shared builder helpers for convenience.\nexport { connect, compose, pipe, makeEntity, makePage, makeOrbital, makeSchema, mergeOrbitals, wire, extractTrait, ensureIdField, plural } from '@almadar/core/builders';\n\n// Phase 9 — typed factory dispatcher (multi-orbital organisms only).\nexport { dispatchOrbitalFactory, getOrbitalFactoryManifest, listOrganismOrbitalManifests } from './dispatch.js';\nexport type { OrbitalParamsManifest, ParamFieldDescriptor } from './dispatch.js';\n","/**\n * std-cascade-on-delete — std-cascade-on-delete — relational `owns` cascade coordinator. Listens for a parent-deleted sentinel (`ParentDeleted` — rename via traitOverrides.events to the consumer's actual parent-deleted event), fetches dependent rows where `<foreignKeyField> === @payload.data.id` from the FIRST entry of `dependentEntities` (current operator surface has no loop primitive — multi-dependent support is a future extension), and emits `CascadeRowsLoaded` so a consumer trait can persist the deletes. Emits `CascadeCompleted` once the row list is published. Multi-dependent iteration and in-atom persist will land when the operator system supports collection iteration.\n *\n * Autogenerated by scripts/regenerate-std-ts.mjs from\n * packages/almadar-std/behaviors/registry/atoms/std-cascade-on-delete.orb.\n *\n * This is a thin descriptor layer over the canonical .orb. The exported\n * functions return TraitReference / PageRefObject / OrbitalDefinition\n * payloads that reference the sibling .orb via `uses:` + `ref:`. The\n * compiler's inline phase materialises the real trait at build time.\n *\n * Do not hand-edit — regenerate via\n * node scripts/regenerate-std-ts.mjs --only=std-cascade-on-delete\n *\n * @level atom\n * @packageDocumentation\n */\n\nimport type { TraitReference, PageRefObject, OrbitalDefinition, Entity, EntityField, EntityPersistence, TraitConfig, TraitFieldRef, EntityRow, SExpr, TraitEventListener, Trait, StateMachine } from '@almadar/core/types';\nimport type { MakeTraitRefOpts } from '@almadar/core/builders';\nimport { makeTraitRef, makePageRef, makeOrbitalWithUses } from '@almadar/core/builders';\n\nconst BEHAVIOR_PATH = 'std/behaviors/std-cascade-on-delete';\nconst ALIAS = 'CascadeOnDelete';\n\n/**\n * Closed set of event keys this trait recognises —\n * derived from the .orb's `stateMachine.events[]` block\n * (transition triggers + emit names). Use as the key type\n * when passing an `events:` rename map at the call site.\n */\nexport type StdCascadeOnDeleteEventKey = 'CascadeCompleted' | 'CascadeFailed' | 'CascadeRowsFetched' | 'CascadeRowsLoaded' | 'ParentDeleted';\n\n/**\n * Payload shape for the `CascadeRowsFetched` event.\n */\nexport interface StdCascadeOnDeleteCascadeRowsFetchedPayload {\n data?: EntityRow[];\n}\n\n/**\n * Payload shape for the `CascadeRowsLoaded` event.\n */\nexport interface StdCascadeOnDeleteCascadeRowsLoadedPayload {\n parentId?: string;\n data?: EntityRow[];\n}\n\n/**\n * Payload shape for the `CascadeCompleted` event.\n */\nexport interface StdCascadeOnDeleteCascadeCompletedPayload {\n parentId?: string;\n deletedCount?: number;\n}\n\n/**\n * Payload shape for the `CascadeFailed` event.\n */\nexport interface StdCascadeOnDeleteCascadeFailedPayload {\n error?: string;\n code?: string;\n}\n\n/**\n * Typed call-site config block for this trait — every\n * field maps to a `config { ... }` entry in the source\n * .lolo. The agent fills these to specialise the trait\n * without modifying its state-machine topology.\n */\nexport interface StdCascadeOnDeleteConfig {\n /** Default: `\"\"` */\n parentEntity?: string;\n /** Default: `[]` */\n dependentEntities?: string[];\n /** Default: `\"\"` */\n foreignKeyField?: string;\n}\n\n/**\n * Params for the std-cascade-on-delete descriptor helpers.\n *\n * `entityName` binds every trait/page reference's `linkedEntity`.\n * The optional override fields mirror TraitReference / PageRefObject\n * fields and are forwarded to `makeTraitRef` / `makePageRef`.\n */\nexport interface StdCascadeOnDeleteParams {\n entityName: string;\n /** Extra fields to add to the orbital-scoped entity clone. */\n fields?: EntityField[];\n /** Entity persistence mode. Defaults to `persistent` when omitted.\n * See @almadar/core EntityPersistence: persistent | runtime | singleton | instance | local. */\n persistence?: EntityPersistence;\n /** Rename the inlined trait at the call site. */\n traitName?: string;\n /** Per-key event rename map. Keys narrow to the trait's declared emit names. */\n events?: Partial<Record<StdCascadeOnDeleteEventKey, string>>;\n /** Per-event effect replacement (keys are POST-rename event names). */\n effects?: Record<string, SExpr[]>;\n /** Replace the imported trait's `listens` array entirely. */\n listens?: TraitEventListener[];\n /** Set every emit's scope. */\n emitsScope?: 'internal' | 'external';\n /** Typed call-site config block — see the per-field interface. */\n config?: StdCascadeOnDeleteConfig;\n /** URL path override for the (first) page. */\n pagePath?: string;\n}\n\n/** Trait descriptor: `CascadeOnDelete.traits.CascadeOnDeleteGate`. */\nexport function stdCascadeOnDeleteTrait(params: StdCascadeOnDeleteParams): TraitReference {\n return makeTraitRef({\n from: BEHAVIOR_PATH,\n ref: `${ALIAS}.traits.CascadeOnDeleteGate`,\n linkedEntity: params.entityName,\n ...(params.traitName !== undefined ? { name: params.traitName } : {}),\n ...(params.events !== undefined ? { events: params.events as Record<string, string> } : {}),\n ...(params.effects !== undefined ? { effects: params.effects } : {}),\n ...(params.listens !== undefined ? { listens: params.listens } : {}),\n ...(params.emitsScope !== undefined ? { emitsScope: params.emitsScope } : {}),\n ...(params.config !== undefined ? { config: params.config as TraitConfig } : {}),\n });\n}\n\n/** Page descriptor: `CascadeOnDelete.pages.CascadeOnDeletePage`. */\nexport function stdCascadeOnDeletePage(params: StdCascadeOnDeleteParams): PageRefObject {\n return makePageRef({\n from: BEHAVIOR_PATH,\n ref: `${ALIAS}.pages.CascadeOnDeletePage`,\n ...(params.pagePath !== undefined ? { path: params.pagePath } : {}),\n linkedEntity: params.entityName,\n });\n}\n\n/** Whole-orbital descriptor. */\nexport function stdCascadeOnDelete(params: StdCascadeOnDeleteParams): OrbitalDefinition {\n const entity: Entity = {\n name: params.entityName,\n fields: params.fields ?? [],\n ...(params.persistence !== undefined ? { persistence: params.persistence } : {}),\n };\n return makeOrbitalWithUses({\n name: 'CascadeOnDeleteOrbital',\n uses: [{ from: BEHAVIOR_PATH, as: ALIAS }],\n entity,\n traits: [\n stdCascadeOnDeleteTrait(params),\n ],\n pages: [\n stdCascadeOnDeletePage(params),\n ],\n });\n}\n","/**\n * Phase 9 — Typed factory dispatcher.\n *\n * Looks up a per-orbital factory by (organism, orbitalName) and calls\n * it with consumer params, narrowing from `object` to the per-factory\n * typed shape via emitted typed guards (no `as unknown as`).\n *\n * Autogenerated by scripts/regenerate-std-ts.mjs from\n * packages/almadar-std/behaviors/registry/<topic>/organisms/std-*.orb\n * (multi-orbital organisms only).\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalDefinition, TraitReference } from '@almadar/core/types';\n\n\nexport interface ParamFieldDescriptor {\n name: string;\n type: string;\n description: string;\n}\n\nexport interface OrbitalParamsManifest {\n organism: string;\n orbitalName: string;\n paramFields: readonly ParamFieldDescriptor[];\n traitNames: readonly string[];\n inlineTraitNames: readonly string[];\n}\n\ninterface DispatchEntry {\n factory: (params: object) => OrbitalDefinition;\n manifest: OrbitalParamsManifest;\n}\n\nconst REGISTRY: ReadonlyMap<string, DispatchEntry> = new Map<string, DispatchEntry>([\n]);\n\n/**\n * One trait reference appended via `params.extraTraits[]`. Phase 2\n * (Mechanism 2). `from` + `as` are required because the dispatcher\n * merges into `uses[]` verbatim — no JS-side name transforms.\n * Mirrors `ExtraTraitRef` from @almadar-io/agent — kept structural\n * (no inter-package type dep) but type-compatible.\n */\nexport interface DispatchExtraTrait\n extends Pick<TraitReference, 'ref' | 'name' | 'linkedEntity' | 'config' | 'events' | 'listens' | 'emitsScope'>\n{\n from: string;\n as: string;\n}\n\n/**\n * Look up the per-orbital factory by (organism, orbitalName) and call\n * it with the supplied params. Returns null when no factory exists.\n * Throws TypeError when params fail the factory's typed guard\n * (caught by the agent's instantiate-orbital surface).\n *\n * `params.extraTraits` (Phase 2) is orthogonal to factory-specific\n * params: it's separated out BEFORE the typed guard runs and appended\n * to `def.traits[]` (with corresponding `uses[]` entries merged) AFTER\n * the factory returns. Strictly additive — never replaces factory\n * traits.\n */\nexport function dispatchOrbitalFactory(\n organism: string,\n orbitalName: string,\n params: object & { extraTraits?: DispatchExtraTrait[] },\n): OrbitalDefinition | null {\n const entry = REGISTRY.get(`${organism}::${orbitalName}`);\n if (!entry) return null;\n const { extraTraits, ...factoryParams } = params;\n const def = entry.factory(factoryParams);\n if (extraTraits && extraTraits.length > 0) {\n if (!def.uses) def.uses = [];\n if (!def.traits) def.traits = [];\n for (const extra of extraTraits) {\n // Dedup on alias (`as`), not registry path (`from`). Multiple\n // aliases for the same path are valid: the factory may have\n // already imported `from: std-stats as: Stats`, but a caller\n // appending `from: std-stats as: KpiStats` needs the new\n // alias registered so its `ref: KpiStats.traits.…` resolves.\n const aliasTaken = def.uses.some((u) => u.as === extra.as);\n if (!aliasTaken) {\n def.uses.push({ from: extra.from, as: extra.as });\n }\n const { from: _from, as: _as, ...traitFields } = extra;\n def.traits.push(traitFields);\n }\n }\n return def;\n}\n\n/**\n * Fetch the params manifest for one (organism, orbitalName). Returns\n * null when no factory exists. Used by the agent's Stage A prompt to\n * surface paramFields + traitNames + inlineTraitNames as the closed\n * set the LLM may emit.\n */\nexport function getOrbitalFactoryManifest(\n organism: string,\n orbitalName: string,\n): OrbitalParamsManifest | null {\n const entry = REGISTRY.get(`${organism}::${orbitalName}`);\n return entry ? entry.manifest : null;\n}\n\n/**\n * List every orbital manifest for one organism. Used by Stage A to\n * embed the chosen organism's full manifest set into the prompt.\n */\nexport function listOrganismOrbitalManifests(\n organism: string,\n): OrbitalParamsManifest[] {\n const out: OrbitalParamsManifest[] = [];\n const prefix = `${organism}::`;\n for (const [key, entry] of REGISTRY) {\n if (key.startsWith(prefix)) out.push(entry.manifest);\n }\n return out;\n}\n","/**\n * Exports Reader\n *\n * Provides programmatic access to golden behaviors.\n * Uses behavior functions from ./functions/ instead of reading .orb files from disk.\n * This makes the package work in bundled environments (no filesystem access for package data).\n *\n * @packageDocumentation\n */\n\nimport * as behaviorFns from './functions/index.js';\nimport type { OrbitalDefinition, OrbitalSchema } from '@almadar/core/types';\n\nexport type BehaviorLevel = 'atoms' | 'molecules' | 'organisms';\n\n/**\n * Convert function name (stdCart) to behavior name (std-cart).\n * Returns null for non-behavior exports (types, helpers, entity/trait/page variants).\n */\nfunction fnNameToBehaviorName(fnName: string): string | null {\n if (fnName.includes('Entity') || fnName.includes('Trait') || fnName.includes('Page')) return null;\n if (['connect', 'compose', 'pipe', 'makeEntity', 'makePage', 'makeOrbital', 'mergeOrbitals', 'wire', 'extractTrait', 'ensureIdField', 'plural'].includes(fnName)) return null;\n\n const withDashes = fnName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n if (!withDashes.startsWith('std-')) return null;\n return withDashes;\n}\n\ninterface BehaviorEntry {\n name: string;\n fn: (params: { entityName: string }) => unknown;\n}\n\nlet cachedEntries: BehaviorEntry[] | null = null;\n\nfunction getEntries(): BehaviorEntry[] {\n if (cachedEntries) return cachedEntries;\n\n cachedEntries = [];\n const fns = behaviorFns as Record<string, unknown>;\n\n for (const [fnName, fn] of Object.entries(fns)) {\n if (typeof fn !== 'function') continue;\n const behaviorName = fnNameToBehaviorName(fnName);\n if (!behaviorName) continue;\n cachedEntries.push({ name: behaviorName, fn: fn as (params: { entityName: string }) => unknown });\n }\n\n return cachedEntries;\n}\n\nfunction callBehavior(entry: BehaviorEntry): OrbitalSchema {\n const result = entry.fn({ entityName: entry.name.replace(/^std-/, '') });\n // Phase 4.2: per-orbital factories return a single `OrbitalDefinition`.\n // Phase 2 (organism-oriented model): the bundled wrapper for each app\n // organism (`stdEcommerce`, `stdHelpdesk`, etc.) returns\n // `OrbitalDefinition[]` — one entry per per-orbital factory it\n // composes. Detect both shapes and spread the array form so the\n // wrapping schema's `orbitals` stays flat. Without this branch,\n // every app organism round-tripped through `loadGoldenOrb` came\n // back as `{ orbitals: [ [orb1, orb2, ...] ] }` and downstream\n // consumers (analyzer catalog, compiler embedded loader) iterated\n // arrays where they expected OrbitalDefinitions.\n const orbitals: OrbitalDefinition[] = Array.isArray(result)\n ? (result as OrbitalDefinition[])\n : [result as OrbitalDefinition];\n return {\n name: entry.name,\n orbitals,\n };\n}\n\nexport function getAllBehaviorNames(): string[] {\n return getEntries().map(e => e.name);\n}\n\nexport function getAllBehaviors(): OrbitalSchema[] {\n const results: OrbitalSchema[] = [];\n for (const entry of getEntries()) {\n try {\n results.push(callBehavior(entry));\n } catch {\n // Some behaviors require params beyond { entityName } (e.g. fields, categories).\n // Skip them when enumerating the catalog — they still work when called with full params.\n }\n }\n return results;\n}\n\nexport function getBehaviorsByLevel(level: BehaviorLevel): OrbitalSchema[] {\n // Level is encoded in the behavior name pattern via the registry\n // For now, return all and let the caller filter via the registry\n return getAllBehaviors();\n}\n\nexport function loadGoldenOrb(behaviorName: string): OrbitalSchema | null {\n const entry = getEntries().find(e => e.name === behaviorName);\n if (!entry) return null;\n try {\n return callBehavior(entry);\n } catch {\n return null;\n }\n}\n\nexport function hasGoldenOrb(behaviorName: string): boolean {\n return getEntries().some(e => e.name === behaviorName);\n}\n\nexport function getBehavior(behaviorName: string): OrbitalSchema | null {\n return loadGoldenOrb(behaviorName);\n}\n","/**\n * Behavior Registry Query Helpers\n *\n * Programmatic access to behaviors-registry.json for filtering,\n * searching, and summarizing behaviors. Used by @almadar/skills\n * to compose agent prompts dynamically.\n *\n * @packageDocumentation\n */\n\nimport { loadGoldenOrb } from './exports-reader.js';\n\n// Import registry data directly — bundlers inline this at build time.\n// Falls back to fs read for dev mode (unbundled).\nlet registryJsonData: { behaviors: Record<string, unknown> } | null = null;\n\nasync function loadRegistryData(): Promise<{ behaviors: Record<string, unknown> }> {\n if (registryJsonData) return registryJsonData;\n try {\n // Try dynamic import (works in bundled and unbundled ESM)\n const { readFileSync } = await import('fs');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n const dir = dirname(fileURLToPath(import.meta.url));\n const raw = readFileSync(resolve(dir, 'behaviors-registry.json'), 'utf-8');\n registryJsonData = JSON.parse(raw);\n } catch {\n registryJsonData = { behaviors: {} };\n }\n return registryJsonData!;\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface RegistryEntry {\n name: string;\n level: 'atom' | 'molecule' | 'organism';\n family: string;\n layer: string;\n description: string;\n statePattern: string;\n complexity: { states: number; events: number; transitions: number };\n defaultEntity: {\n name: string;\n persistence: string;\n fields: Array<{ name: string; type: string; default?: string }>;\n };\n defaultLabels: {\n title: string;\n entitySingular: string;\n entityPlural: string;\n };\n composableWith: string[];\n connectableEvents: string[];\n eventPayloads: Record<string, Array<{ name: string; type: string; required: boolean }>>;\n}\n\nexport interface BehaviorSummary {\n name: string;\n level: string;\n description: string;\n states: string[];\n events: string[];\n slots: string[];\n patterns: string[];\n complexity: { states: number; events: number; transitions: number };\n composableWith: string[];\n}\n\n// ============================================================================\n// Registry Cache\n// ============================================================================\n\nlet registryCache: Record<string, RegistryEntry> | null = null;\n\n/**\n * Read and cache the behavior registry.\n * Async to support bundled environments where fs may not be available.\n */\nexport async function getBehaviorRegistry(): Promise<Record<string, RegistryEntry>> {\n if (registryCache) return registryCache;\n try {\n const data = await loadRegistryData();\n registryCache = data.behaviors as Record<string, RegistryEntry>;\n return registryCache;\n } catch {\n return {};\n }\n}\n\n// ============================================================================\n// Query Functions\n// ============================================================================\n\n/**\n * Filter behaviors by domain. Matches against layer (primary) and family (fallback).\n */\nexport async function getBehaviorsByDomain(domain: string): Promise<RegistryEntry[]> {\n const registry = await getBehaviorRegistry();\n const lower = domain.toLowerCase();\n return Object.values(registry).filter((b) => {\n return b.layer.toLowerCase() === lower ||\n b.layer.toLowerCase().includes(lower) ||\n b.family.toLowerCase() === lower ||\n b.family.toLowerCase().includes(lower);\n });\n}\n\n/**\n * Filter behaviors by connectable operations (events).\n * Returns behaviors sorted by match count (most matching ops first).\n */\nexport async function getBehaviorsByOperations(ops: string[]): Promise<RegistryEntry[]> {\n const registry = await getBehaviorRegistry();\n const upperOps = ops.map(o => o.toUpperCase());\n\n const scored = Object.values(registry).map((b) => {\n const matches = upperOps.filter(op =>\n b.connectableEvents.some(e => e.toUpperCase() === op || e.toUpperCase().includes(op))\n );\n return { entry: b, score: matches.length };\n });\n\n return scored\n .filter(s => s.score > 0)\n .sort((a, b) => b.score - a.score)\n .map(s => s.entry);\n}\n\n/**\n * Fuzzy search across name, description, family, layer, and entity name.\n */\nexport async function searchBehaviors(query: string): Promise<RegistryEntry[]> {\n const registry = await getBehaviorRegistry();\n const tokens = query.toLowerCase().split(/\\s+/).filter(Boolean);\n\n const scored = Object.values(registry).map((b) => {\n const searchText = [\n b.name,\n b.description,\n b.family,\n b.layer,\n b.defaultEntity.name,\n b.statePattern,\n ].join(' ').toLowerCase();\n\n const score = tokens.filter(t => searchText.includes(t)).length;\n return { entry: b, score };\n });\n\n return scored\n .filter(s => s.score > 0)\n .sort((a, b) => b.score - a.score)\n .map(s => s.entry);\n}\n\n/**\n * Get a compact summary of a behavior including slots and patterns from the .orb file.\n */\nexport async function getBehaviorSummary(name: string): Promise<BehaviorSummary | null> {\n const registry = await getBehaviorRegistry();\n const entry = registry[name];\n if (!entry) return null;\n\n // Base data from registry\n const summary: BehaviorSummary = {\n name: entry.name,\n level: entry.level,\n description: entry.description,\n states: entry.statePattern.split(', ').filter(Boolean),\n events: entry.connectableEvents,\n slots: [],\n patterns: [],\n complexity: entry.complexity,\n composableWith: entry.composableWith.slice(0, 10),\n };\n\n // Enrich with slots and patterns from the actual .orb file\n try {\n const orb = loadGoldenOrb(name);\n if (orb) {\n const slots = new Set<string>();\n const patterns = new Set<string>();\n extractSlotsAndPatterns(orb, slots, patterns);\n summary.slots = Array.from(slots);\n summary.patterns = Array.from(patterns);\n }\n } catch {\n // .orb load failed, return registry-only data\n }\n\n return summary;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Walk an object recursively to extract render-ui slots and pattern types.\n */\nfunction extractSlotsAndPatterns(\n obj: unknown,\n slots: Set<string>,\n patterns: Set<string>,\n): void {\n if (Array.isArray(obj)) {\n // Check for render-ui effect: [\"render-ui\", slotName, uiTree]\n if (obj.length >= 3 && obj[0] === 'render-ui' && typeof obj[1] === 'string') {\n slots.add(obj[1]);\n if (obj[2] && typeof obj[2] === 'object') {\n extractPatternTypes(obj[2], patterns);\n }\n }\n for (const item of obj) {\n extractSlotsAndPatterns(item, slots, patterns);\n }\n } else if (obj && typeof obj === 'object') {\n for (const value of Object.values(obj)) {\n extractSlotsAndPatterns(value, slots, patterns);\n }\n }\n}\n\n/**\n * Walk a render-ui tree to collect all pattern type values.\n */\nfunction extractPatternTypes(node: unknown, patterns: Set<string>): void {\n if (!node || typeof node !== 'object') return;\n const obj = node as Record<string, unknown>;\n if (typeof obj.type === 'string') {\n patterns.add(obj.type);\n }\n if (Array.isArray(obj.children)) {\n for (const child of obj.children) {\n extractPatternTypes(child, patterns);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../behaviors/types.ts","../../behaviors/functions/index.ts","../../behaviors/functions/core/atoms/std-cascade-on-delete.ts","../../behaviors/functions/dispatch.ts","../../behaviors/exports-reader.ts","../../behaviors/query.ts","../../behaviors/embeddings.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Standard Behaviors Types\n *\n * Standard Behaviors are reusable OrbitalSchema definitions with a `std-` naming convention.\n * Each behavior is a self-contained .orb file that can function independently.\n *\n * @packageDocumentation\n */\n\nimport type {\n SExpr,\n Effect,\n Expression,\n Trait,\n TraitCategory,\n StateMachine,\n State,\n Event,\n Transition,\n Guard,\n TraitTick,\n TraitDataEntity,\n TraitEntityField,\n OrbitalSchema,\n Orbital,\n Entity,\n} from '@almadar/core/types';\n\n// Re-export core types for use in behaviors\nexport type {\n Effect,\n Expression,\n Trait,\n StateMachine,\n State,\n Event,\n Transition,\n Guard,\n TraitTick,\n TraitDataEntity,\n TraitEntityField,\n TraitCategory,\n OrbitalSchema,\n Orbital,\n Entity,\n};\n\n// ============================================================================\n// Legacy Type Aliases (for backward compatibility only)\n// ============================================================================\n\n/**\n * @deprecated Use OrbitalSchema directly. BehaviorTrait is kept for backward compatibility.\n */\nexport type BehaviorTrait = Trait;\n\n// ============================================================================\n// Item Action (for render_ui props)\n// ============================================================================\n\nexport interface ItemAction {\n label: string;\n event?: string;\n navigatesTo?: string;\n placement?: 'row' | 'bulk' | 'card' | 'footer' | 'header';\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger';\n showWhen?: SExpr | string;\n}\n\n// ============================================================================\n// Behavior Metadata (for quick lookup and documentation)\n// ============================================================================\n\n/**\n * Behavior metadata extracted from a Trait for documentation purposes\n */\nexport interface BehaviorMetadata {\n name: string;\n category?: TraitCategory;\n description: string;\n states: string[];\n events: string[];\n tickCount: number;\n transitionCount: number;\n hasDataEntities: boolean;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Extract metadata from a BehaviorTrait for documentation\n */\nexport function getBehaviorMetadata(behavior: BehaviorTrait): BehaviorMetadata {\n const sm = behavior.stateMachine;\n\n // Core types: State is always an object with name\n const states: string[] = (sm?.states || []).map(s => s.name);\n\n // Core types: Event is always an object with key\n const events: string[] = (sm?.events || []).map(e => e.key);\n\n return {\n name: behavior.name,\n category: behavior.category,\n description: behavior.description || '',\n states,\n events,\n tickCount: behavior.ticks?.length || 0,\n transitionCount: sm?.transitions?.length || 0,\n hasDataEntities: (behavior.dataEntities?.length || 0) > 0,\n };\n}\n\n/**\n * Validate behavior structure\n */\nexport function validateBehaviorStructure(behavior: BehaviorTrait): string[] {\n const errors: string[] = [];\n\n if (!behavior.name) {\n errors.push('Behavior must have a name');\n }\n\n if (!behavior.name.startsWith('std/')) {\n errors.push(`Behavior name should start with 'std/' (got: ${behavior.name})`);\n }\n\n const sm = behavior.stateMachine;\n if (sm) {\n if (!sm.states || sm.states.length === 0) {\n errors.push('State machine must have at least one state');\n }\n\n // Core types: check initial state using isInitial flag on State\n const hasInitialState = sm.states?.some(s => s.isInitial);\n if (!hasInitialState) {\n errors.push('State machine must have an initial state (set isInitial: true on one state)');\n }\n }\n\n return errors;\n}\n\n/**\n * Validate behavior events match transitions\n */\nexport function validateBehaviorEvents(behavior: BehaviorTrait): string[] {\n const errors: string[] = [];\n const sm = behavior.stateMachine;\n if (!sm) return errors;\n\n // Core types: Event is always an object with key\n const declaredEvents = new Set(\n (sm.events || []).map(e => e.key)\n );\n\n const transitionEvents = new Set(\n (sm.transitions || []).map(t => t.event)\n );\n\n for (const event of transitionEvents) {\n if (event && !declaredEvents.has(event)) {\n errors.push(`Transition uses undeclared event: ${event}`);\n }\n }\n\n return errors;\n}\n\n/**\n * Validate behavior states match transitions\n */\nexport function validateBehaviorStates(behavior: BehaviorTrait): string[] {\n const errors: string[] = [];\n const sm = behavior.stateMachine;\n if (!sm) return errors;\n\n // Core types: State is always an object with name\n const declaredStates = new Set(\n (sm.states || []).map(s => s.name)\n );\n\n for (const t of sm.transitions || []) {\n // Core types: from and to are both strings\n if (t.from && !declaredStates.has(t.from)) {\n errors.push(`Transition from undeclared state: ${t.from}`);\n }\n\n if (t.to && !declaredStates.has(t.to)) {\n errors.push(`Transition to undeclared state: ${t.to}`);\n }\n }\n\n return errors;\n}\n","/**\n * Behavior Functions\n *\n * Autogenerated by scripts/regenerate-std-ts.mjs.\n * Thin descriptor layer over the .orb registry; the canonical state\n * machines live in packages/almadar-std/behaviors/registry/.\n *\n * Layout: <topic>/<tier>/std-X.ts (topic is any direct subdir of functions/).\n *\n * @packageDocumentation\n */\n\n// Atoms\nexport * from './core/atoms/std-cascade-on-delete.js';\n\n// Molecules\n\n// Organisms\n\n// Re-export shared builder helpers for convenience.\nexport { connect, compose, pipe, makeEntity, makePage, makeOrbital, makeSchema, mergeOrbitals, wire, extractTrait, ensureIdField, plural } from '@almadar/core/builders';\n\n// Phase 9 — typed factory dispatcher (multi-orbital organisms only).\nexport { dispatchOrbitalFactory, getOrbitalFactoryManifest, listOrganismOrbitalManifests } from './dispatch.js';\nexport type { OrbitalParamsManifest, ParamFieldDescriptor } from './dispatch.js';\n","/**\n * std-cascade-on-delete — std-cascade-on-delete — relational `owns` cascade coordinator. Listens for a parent-deleted sentinel (`ParentDeleted` — rename via traitOverrides.events to the consumer's actual parent-deleted event), fetches dependent rows where `<foreignKeyField> === @payload.data.id` from the FIRST entry of `dependentEntities` (current operator surface has no loop primitive — multi-dependent support is a future extension), and emits `CascadeRowsLoaded` so a consumer trait can persist the deletes. Emits `CascadeCompleted` once the row list is published. Multi-dependent iteration and in-atom persist will land when the operator system supports collection iteration.\n *\n * Autogenerated by scripts/regenerate-std-ts.mjs from\n * packages/almadar-std/behaviors/registry/atoms/std-cascade-on-delete.orb.\n *\n * This is a thin descriptor layer over the canonical .orb. The exported\n * functions return TraitReference / PageRefObject / OrbitalDefinition\n * payloads that reference the sibling .orb via `uses:` + `ref:`. The\n * compiler's inline phase materialises the real trait at build time.\n *\n * Do not hand-edit — regenerate via\n * node scripts/regenerate-std-ts.mjs --only=std-cascade-on-delete\n *\n * @level atom\n * @packageDocumentation\n */\n\nimport type { TraitReference, PageRefObject, OrbitalDefinition, Entity, EntityField, EntityPersistence, TraitConfig, TraitFieldRef, EntityRow, SExpr, TraitEventListener, Trait, StateMachine } from '@almadar/core/types';\nimport type { MakeTraitRefOpts } from '@almadar/core/builders';\nimport { makeTraitRef, makePageRef, makeOrbitalWithUses } from '@almadar/core/builders';\n\nconst BEHAVIOR_PATH = 'std/behaviors/std-cascade-on-delete';\nconst ALIAS = 'CascadeOnDelete';\n\n/**\n * Closed set of event keys this trait recognises —\n * derived from the .orb's `stateMachine.events[]` block\n * (transition triggers + emit names). Use as the key type\n * when passing an `events:` rename map at the call site.\n */\nexport type StdCascadeOnDeleteEventKey = 'CascadeCompleted' | 'CascadeFailed' | 'CascadeRowsFetched' | 'CascadeRowsLoaded' | 'ParentDeleted';\n\n/**\n * Payload shape for the `CascadeRowsFetched` event.\n */\nexport interface StdCascadeOnDeleteCascadeRowsFetchedPayload {\n data?: EntityRow[];\n}\n\n/**\n * Payload shape for the `CascadeRowsLoaded` event.\n */\nexport interface StdCascadeOnDeleteCascadeRowsLoadedPayload {\n parentId?: string;\n data?: EntityRow[];\n}\n\n/**\n * Payload shape for the `CascadeCompleted` event.\n */\nexport interface StdCascadeOnDeleteCascadeCompletedPayload {\n parentId?: string;\n deletedCount?: number;\n}\n\n/**\n * Payload shape for the `CascadeFailed` event.\n */\nexport interface StdCascadeOnDeleteCascadeFailedPayload {\n error?: string;\n code?: string;\n}\n\n/**\n * Typed call-site config block for this trait — every\n * field maps to a `config { ... }` entry in the source\n * .lolo. The agent fills these to specialise the trait\n * without modifying its state-machine topology.\n */\nexport interface StdCascadeOnDeleteConfig {\n /** Default: `\"\"` */\n parentEntity?: string;\n /** Default: `[]` */\n dependentEntities?: string[];\n /** Default: `\"\"` */\n foreignKeyField?: string;\n}\n\n/**\n * Params for the std-cascade-on-delete descriptor helpers.\n *\n * `entityName` binds every trait/page reference's `linkedEntity`.\n * The optional override fields mirror TraitReference / PageRefObject\n * fields and are forwarded to `makeTraitRef` / `makePageRef`.\n */\nexport interface StdCascadeOnDeleteParams {\n entityName: string;\n /** Extra fields to add to the orbital-scoped entity clone. */\n fields?: EntityField[];\n /** Entity persistence mode. Defaults to `persistent` when omitted.\n * See @almadar/core EntityPersistence: persistent | runtime | singleton | instance | local. */\n persistence?: EntityPersistence;\n /** Rename the inlined trait at the call site. */\n traitName?: string;\n /** Per-key event rename map. Keys narrow to the trait's declared emit names. */\n events?: Partial<Record<StdCascadeOnDeleteEventKey, string>>;\n /** Per-event effect replacement (keys are POST-rename event names). */\n effects?: Record<string, SExpr[]>;\n /** Replace the imported trait's `listens` array entirely. */\n listens?: TraitEventListener[];\n /** Set every emit's scope. */\n emitsScope?: 'internal' | 'external';\n /** Typed call-site config block — see the per-field interface. */\n config?: StdCascadeOnDeleteConfig;\n /** URL path override for the (first) page. */\n pagePath?: string;\n}\n\n/** Trait descriptor: `CascadeOnDelete.traits.CascadeOnDeleteGate`. */\nexport function stdCascadeOnDeleteTrait(params: StdCascadeOnDeleteParams): TraitReference {\n return makeTraitRef({\n from: BEHAVIOR_PATH,\n ref: `${ALIAS}.traits.CascadeOnDeleteGate`,\n linkedEntity: params.entityName,\n ...(params.traitName !== undefined ? { name: params.traitName } : {}),\n ...(params.events !== undefined ? { events: params.events as Record<string, string> } : {}),\n ...(params.effects !== undefined ? { effects: params.effects } : {}),\n ...(params.listens !== undefined ? { listens: params.listens } : {}),\n ...(params.emitsScope !== undefined ? { emitsScope: params.emitsScope } : {}),\n ...(params.config !== undefined ? { config: params.config as TraitConfig } : {}),\n });\n}\n\n/** Page descriptor: `CascadeOnDelete.pages.CascadeOnDeletePage`. */\nexport function stdCascadeOnDeletePage(params: StdCascadeOnDeleteParams): PageRefObject {\n return makePageRef({\n from: BEHAVIOR_PATH,\n ref: `${ALIAS}.pages.CascadeOnDeletePage`,\n ...(params.pagePath !== undefined ? { path: params.pagePath } : {}),\n linkedEntity: params.entityName,\n });\n}\n\n/** Whole-orbital descriptor. */\nexport function stdCascadeOnDelete(params: StdCascadeOnDeleteParams): OrbitalDefinition {\n const entity: Entity = {\n name: params.entityName,\n fields: params.fields ?? [],\n ...(params.persistence !== undefined ? { persistence: params.persistence } : {}),\n };\n return makeOrbitalWithUses({\n name: 'CascadeOnDeleteOrbital',\n uses: [{ from: BEHAVIOR_PATH, as: ALIAS }],\n entity,\n traits: [\n stdCascadeOnDeleteTrait(params),\n ],\n pages: [\n stdCascadeOnDeletePage(params),\n ],\n });\n}\n","/**\n * Phase 9 — Typed factory dispatcher.\n *\n * Looks up a per-orbital factory by (organism, orbitalName) and calls\n * it with consumer params, narrowing from `object` to the per-factory\n * typed shape via emitted typed guards (no `as unknown as`).\n *\n * Autogenerated by scripts/regenerate-std-ts.mjs from\n * packages/almadar-std/behaviors/registry/<topic>/organisms/std-*.orb\n * (multi-orbital organisms only).\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalDefinition, TraitReference } from '@almadar/core/types';\n\n\nexport interface ParamFieldDescriptor {\n name: string;\n type: string;\n description: string;\n}\n\nexport interface OrbitalParamsManifest {\n organism: string;\n orbitalName: string;\n paramFields: readonly ParamFieldDescriptor[];\n traitNames: readonly string[];\n inlineTraitNames: readonly string[];\n}\n\ninterface DispatchEntry {\n factory: (params: object) => OrbitalDefinition;\n manifest: OrbitalParamsManifest;\n}\n\nconst REGISTRY: ReadonlyMap<string, DispatchEntry> = new Map<string, DispatchEntry>([\n]);\n\n/**\n * One trait reference appended via `params.extraTraits[]`. Phase 2\n * (Mechanism 2). `from` + `as` are required because the dispatcher\n * merges into `uses[]` verbatim — no JS-side name transforms.\n * Mirrors `ExtraTraitRef` from @almadar-io/agent — kept structural\n * (no inter-package type dep) but type-compatible.\n */\nexport interface DispatchExtraTrait\n extends Pick<TraitReference, 'ref' | 'name' | 'linkedEntity' | 'config' | 'events' | 'listens' | 'emitsScope'>\n{\n from: string;\n as: string;\n}\n\n/**\n * Look up the per-orbital factory by (organism, orbitalName) and call\n * it with the supplied params. Returns null when no factory exists.\n * Throws TypeError when params fail the factory's typed guard\n * (caught by the agent's instantiate-orbital surface).\n *\n * `params.extraTraits` (Phase 2) is orthogonal to factory-specific\n * params: it's separated out BEFORE the typed guard runs and appended\n * to `def.traits[]` (with corresponding `uses[]` entries merged) AFTER\n * the factory returns. Strictly additive — never replaces factory\n * traits.\n */\nexport function dispatchOrbitalFactory(\n organism: string,\n orbitalName: string,\n params: object & { extraTraits?: DispatchExtraTrait[] },\n): OrbitalDefinition | null {\n const entry = REGISTRY.get(`${organism}::${orbitalName}`);\n if (!entry) return null;\n const { extraTraits, ...factoryParams } = params;\n const def = entry.factory(factoryParams);\n if (extraTraits && extraTraits.length > 0) {\n if (!def.uses) def.uses = [];\n if (!def.traits) def.traits = [];\n for (const extra of extraTraits) {\n // Dedup on alias (`as`), not registry path (`from`). Multiple\n // aliases for the same path are valid: the factory may have\n // already imported `from: std-stats as: Stats`, but a caller\n // appending `from: std-stats as: KpiStats` needs the new\n // alias registered so its `ref: KpiStats.traits.…` resolves.\n const aliasTaken = def.uses.some((u) => u.as === extra.as);\n if (!aliasTaken) {\n def.uses.push({ from: extra.from, as: extra.as });\n }\n const { from: _from, as: _as, ...traitFields } = extra;\n def.traits.push(traitFields);\n }\n }\n return def;\n}\n\n/**\n * Fetch the params manifest for one (organism, orbitalName). Returns\n * null when no factory exists. Used by the agent's Stage A prompt to\n * surface paramFields + traitNames + inlineTraitNames as the closed\n * set the LLM may emit.\n */\nexport function getOrbitalFactoryManifest(\n organism: string,\n orbitalName: string,\n): OrbitalParamsManifest | null {\n const entry = REGISTRY.get(`${organism}::${orbitalName}`);\n return entry ? entry.manifest : null;\n}\n\n/**\n * List every orbital manifest for one organism. Used by Stage A to\n * embed the chosen organism's full manifest set into the prompt.\n */\nexport function listOrganismOrbitalManifests(\n organism: string,\n): OrbitalParamsManifest[] {\n const out: OrbitalParamsManifest[] = [];\n const prefix = `${organism}::`;\n for (const [key, entry] of REGISTRY) {\n if (key.startsWith(prefix)) out.push(entry.manifest);\n }\n return out;\n}\n","/**\n * Exports Reader\n *\n * Provides programmatic access to golden behaviors.\n * Uses behavior functions from ./functions/ instead of reading .orb files from disk.\n * This makes the package work in bundled environments (no filesystem access for package data).\n *\n * @packageDocumentation\n */\n\nimport * as behaviorFns from './functions/index.js';\nimport type { OrbitalDefinition, OrbitalSchema } from '@almadar/core/types';\n\nexport type BehaviorLevel = 'atoms' | 'molecules' | 'organisms';\n\n/**\n * Convert function name (stdCart) to behavior name (std-cart).\n * Returns null for non-behavior exports (types, helpers, entity/trait/page variants).\n */\nfunction fnNameToBehaviorName(fnName: string): string | null {\n if (fnName.includes('Entity') || fnName.includes('Trait') || fnName.includes('Page')) return null;\n if (['connect', 'compose', 'pipe', 'makeEntity', 'makePage', 'makeOrbital', 'mergeOrbitals', 'wire', 'extractTrait', 'ensureIdField', 'plural'].includes(fnName)) return null;\n\n const withDashes = fnName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n if (!withDashes.startsWith('std-')) return null;\n return withDashes;\n}\n\ninterface BehaviorEntry {\n name: string;\n fn: (params: { entityName: string }) => unknown;\n}\n\nlet cachedEntries: BehaviorEntry[] | null = null;\n\nfunction getEntries(): BehaviorEntry[] {\n if (cachedEntries) return cachedEntries;\n\n cachedEntries = [];\n const fns = behaviorFns as Record<string, unknown>;\n\n for (const [fnName, fn] of Object.entries(fns)) {\n if (typeof fn !== 'function') continue;\n const behaviorName = fnNameToBehaviorName(fnName);\n if (!behaviorName) continue;\n cachedEntries.push({ name: behaviorName, fn: fn as (params: { entityName: string }) => unknown });\n }\n\n return cachedEntries;\n}\n\nfunction callBehavior(entry: BehaviorEntry): OrbitalSchema {\n const result = entry.fn({ entityName: entry.name.replace(/^std-/, '') });\n // Phase 4.2: per-orbital factories return a single `OrbitalDefinition`.\n // Phase 2 (organism-oriented model): the bundled wrapper for each app\n // organism (`stdEcommerce`, `stdHelpdesk`, etc.) returns\n // `OrbitalDefinition[]` — one entry per per-orbital factory it\n // composes. Detect both shapes and spread the array form so the\n // wrapping schema's `orbitals` stays flat. Without this branch,\n // every app organism round-tripped through `loadGoldenOrb` came\n // back as `{ orbitals: [ [orb1, orb2, ...] ] }` and downstream\n // consumers (analyzer catalog, compiler embedded loader) iterated\n // arrays where they expected OrbitalDefinitions.\n const orbitals: OrbitalDefinition[] = Array.isArray(result)\n ? (result as OrbitalDefinition[])\n : [result as OrbitalDefinition];\n return {\n name: entry.name,\n orbitals,\n };\n}\n\nexport function getAllBehaviorNames(): string[] {\n return getEntries().map(e => e.name);\n}\n\nexport function getAllBehaviors(): OrbitalSchema[] {\n const results: OrbitalSchema[] = [];\n for (const entry of getEntries()) {\n try {\n results.push(callBehavior(entry));\n } catch {\n // Some behaviors require params beyond { entityName } (e.g. fields, categories).\n // Skip them when enumerating the catalog — they still work when called with full params.\n }\n }\n return results;\n}\n\nexport function getBehaviorsByLevel(level: BehaviorLevel): OrbitalSchema[] {\n // Level is encoded in the behavior name pattern via the registry\n // For now, return all and let the caller filter via the registry\n return getAllBehaviors();\n}\n\nexport function loadGoldenOrb(behaviorName: string): OrbitalSchema | null {\n const entry = getEntries().find(e => e.name === behaviorName);\n if (!entry) return null;\n try {\n return callBehavior(entry);\n } catch {\n return null;\n }\n}\n\nexport function hasGoldenOrb(behaviorName: string): boolean {\n return getEntries().some(e => e.name === behaviorName);\n}\n\nexport function getBehavior(behaviorName: string): OrbitalSchema | null {\n return loadGoldenOrb(behaviorName);\n}\n","/**\n * Behavior Registry Query Helpers\n *\n * Programmatic access to behaviors-registry.json for filtering,\n * searching, and summarizing behaviors. Used by @almadar/skills\n * to compose agent prompts dynamically.\n *\n * @packageDocumentation\n */\n\nimport { loadGoldenOrb } from './exports-reader.js';\n\n// Import registry data directly — bundlers inline this at build time.\n// Falls back to fs read for dev mode (unbundled).\nlet registryJsonData: { behaviors: Record<string, unknown> } | null = null;\n\nasync function loadRegistryData(): Promise<{ behaviors: Record<string, unknown> }> {\n if (registryJsonData) return registryJsonData;\n try {\n // Try dynamic import (works in bundled and unbundled ESM)\n const { readFileSync } = await import('fs');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n const dir = dirname(fileURLToPath(import.meta.url));\n const raw = readFileSync(resolve(dir, 'behaviors-registry.json'), 'utf-8');\n registryJsonData = JSON.parse(raw);\n } catch {\n registryJsonData = { behaviors: {} };\n }\n return registryJsonData!;\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface RegistryEntry {\n name: string;\n level: 'atom' | 'molecule' | 'organism';\n family: string;\n layer: string;\n description: string;\n statePattern: string;\n complexity: { states: number; events: number; transitions: number };\n defaultEntity: {\n name: string;\n persistence: string;\n fields: Array<{ name: string; type: string; default?: string }>;\n };\n defaultLabels: {\n title: string;\n entitySingular: string;\n entityPlural: string;\n };\n composableWith: string[];\n connectableEvents: string[];\n eventPayloads: Record<string, Array<{ name: string; type: string; required: boolean }>>;\n}\n\nexport interface BehaviorSummary {\n name: string;\n level: string;\n description: string;\n states: string[];\n events: string[];\n slots: string[];\n patterns: string[];\n complexity: { states: number; events: number; transitions: number };\n composableWith: string[];\n}\n\n// ============================================================================\n// Registry Cache\n// ============================================================================\n\nlet registryCache: Record<string, RegistryEntry> | null = null;\n\n/**\n * Read and cache the behavior registry.\n * Async to support bundled environments where fs may not be available.\n */\nexport async function getBehaviorRegistry(): Promise<Record<string, RegistryEntry>> {\n if (registryCache) return registryCache;\n try {\n const data = await loadRegistryData();\n registryCache = data.behaviors as Record<string, RegistryEntry>;\n return registryCache;\n } catch {\n return {};\n }\n}\n\n// ============================================================================\n// Query Functions\n// ============================================================================\n\n/**\n * Filter behaviors by domain. Matches against layer (primary) and family (fallback).\n */\nexport async function getBehaviorsByDomain(domain: string): Promise<RegistryEntry[]> {\n const registry = await getBehaviorRegistry();\n const lower = domain.toLowerCase();\n return Object.values(registry).filter((b) => {\n return b.layer.toLowerCase() === lower ||\n b.layer.toLowerCase().includes(lower) ||\n b.family.toLowerCase() === lower ||\n b.family.toLowerCase().includes(lower);\n });\n}\n\n/**\n * Filter behaviors by connectable operations (events).\n * Returns behaviors sorted by match count (most matching ops first).\n */\nexport async function getBehaviorsByOperations(ops: string[]): Promise<RegistryEntry[]> {\n const registry = await getBehaviorRegistry();\n const upperOps = ops.map(o => o.toUpperCase());\n\n const scored = Object.values(registry).map((b) => {\n const matches = upperOps.filter(op =>\n b.connectableEvents.some(e => e.toUpperCase() === op || e.toUpperCase().includes(op))\n );\n return { entry: b, score: matches.length };\n });\n\n return scored\n .filter(s => s.score > 0)\n .sort((a, b) => b.score - a.score)\n .map(s => s.entry);\n}\n\n/**\n * Fuzzy search across name, description, family, layer, and entity name.\n */\nexport async function searchBehaviors(query: string): Promise<RegistryEntry[]> {\n const registry = await getBehaviorRegistry();\n const tokens = query.toLowerCase().split(/\\s+/).filter(Boolean);\n\n const scored = Object.values(registry).map((b) => {\n const searchText = [\n b.name,\n b.description,\n b.family,\n b.layer,\n b.defaultEntity.name,\n b.statePattern,\n ].join(' ').toLowerCase();\n\n const score = tokens.filter(t => searchText.includes(t)).length;\n return { entry: b, score };\n });\n\n return scored\n .filter(s => s.score > 0)\n .sort((a, b) => b.score - a.score)\n .map(s => s.entry);\n}\n\n/**\n * Get a compact summary of a behavior including slots and patterns from the .orb file.\n */\nexport async function getBehaviorSummary(name: string): Promise<BehaviorSummary | null> {\n const registry = await getBehaviorRegistry();\n const entry = registry[name];\n if (!entry) return null;\n\n // Base data from registry\n const summary: BehaviorSummary = {\n name: entry.name,\n level: entry.level,\n description: entry.description,\n states: entry.statePattern.split(', ').filter(Boolean),\n events: entry.connectableEvents,\n slots: [],\n patterns: [],\n complexity: entry.complexity,\n composableWith: entry.composableWith.slice(0, 10),\n };\n\n // Enrich with slots and patterns from the actual .orb file\n try {\n const orb = loadGoldenOrb(name);\n if (orb) {\n const slots = new Set<string>();\n const patterns = new Set<string>();\n extractSlotsAndPatterns(orb, slots, patterns);\n summary.slots = Array.from(slots);\n summary.patterns = Array.from(patterns);\n }\n } catch {\n // .orb load failed, return registry-only data\n }\n\n return summary;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Walk an object recursively to extract render-ui slots and pattern types.\n */\nfunction extractSlotsAndPatterns(\n obj: unknown,\n slots: Set<string>,\n patterns: Set<string>,\n): void {\n if (Array.isArray(obj)) {\n // Check for render-ui effect: [\"render-ui\", slotName, uiTree]\n if (obj.length >= 3 && obj[0] === 'render-ui' && typeof obj[1] === 'string') {\n slots.add(obj[1]);\n if (obj[2] && typeof obj[2] === 'object') {\n extractPatternTypes(obj[2], patterns);\n }\n }\n for (const item of obj) {\n extractSlotsAndPatterns(item, slots, patterns);\n }\n } else if (obj && typeof obj === 'object') {\n for (const value of Object.values(obj)) {\n extractSlotsAndPatterns(value, slots, patterns);\n }\n }\n}\n\n/**\n * Walk a render-ui tree to collect all pattern type values.\n */\nfunction extractPatternTypes(node: unknown, patterns: Set<string>): void {\n if (!node || typeof node !== 'object') return;\n const obj = node as Record<string, unknown>;\n if (typeof obj.type === 'string') {\n patterns.add(obj.type);\n }\n if (Array.isArray(obj.children)) {\n for (const child of obj.children) {\n extractPatternTypes(child, patterns);\n }\n }\n}\n","/**\n * Behavior Embeddings — typed loader for the publish-time-baked\n * `behaviors-embeddings.json` artifact.\n *\n * The catalog in `behaviors-registry.json` lists every organism + atom\n * available in the std library. At publish time, `scripts/build-embeddings.ts`\n * calls the OpenAI Embeddings API once per entry and writes the resulting\n * vectors to `behaviors-embeddings.json`. Downstream consumers\n * (`@almadar-io/agent` Stage A cosine retrieval) read these vectors at\n * runtime to rank organisms / atoms against the user's request — top-K\n * survives into the prompt, the rest is filtered out.\n *\n * One embedding bake per std publish. Runtime cost: one OpenAI embed call\n * per Stage A turn (the user request); the catalog side is free.\n *\n * @packageDocumentation\n */\n\nexport interface BehaviorEmbeddingsManifest {\n /** Std version at bake time. Matches `package.json` `version`. */\n version: string;\n /** Embedding model used (e.g. `text-embedding-3-small`). */\n model: string;\n /** Vector dimensionality (e.g. 1536 for text-embedding-3-small). */\n dimensions: number;\n /** Per-behavior vectors keyed by canonical name (matches registry keys). */\n vectors: Record<string, readonly number[]>;\n}\n\nlet cache: BehaviorEmbeddingsManifest | null = null;\n\nasync function loadManifest(): Promise<BehaviorEmbeddingsManifest | null> {\n if (cache) return cache;\n try {\n const { readFileSync } = await import('fs');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n const dir = dirname(fileURLToPath(import.meta.url));\n const raw = readFileSync(resolve(dir, 'behaviors-embeddings.json'), 'utf-8');\n const parsed = JSON.parse(raw) as BehaviorEmbeddingsManifest;\n if (\n typeof parsed?.version !== 'string' ||\n typeof parsed?.model !== 'string' ||\n typeof parsed?.dimensions !== 'number' ||\n !parsed?.vectors ||\n typeof parsed.vectors !== 'object'\n ) {\n return null;\n }\n cache = parsed;\n return cache;\n } catch {\n return null;\n }\n}\n\n/**\n * Return the typed embeddings manifest. Returns `null` when the bake step\n * hasn't run (dev workflow, unbundled std checkout without\n * `pnpm run build:embeddings`). Consumers fall back to the full catalog\n * walk in that case.\n */\nexport async function getBehaviorEmbeddings(): Promise<BehaviorEmbeddingsManifest | null> {\n return loadManifest();\n}\n\n/**\n * Fetch the embedding vector for one behavior by name. Returns `null` when\n * the manifest is missing OR the behavior wasn't indexed at bake time\n * (e.g. a new atom landed after the most recent publish — bake again).\n */\nexport async function getBehaviorEmbedding(behaviorName: string): Promise<readonly number[] | null> {\n const manifest = await loadManifest();\n if (!manifest) return null;\n return manifest.vectors[behaviorName] ?? null;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { BehaviorTrait } from './behaviors/types.js';
|
|
|
14
14
|
export { BehaviorMetadata, ItemAction, getBehaviorMetadata, validateBehaviorEvents, validateBehaviorStates, validateBehaviorStructure } from './behaviors/types.js';
|
|
15
15
|
export { BehaviorLevel, getAllBehaviorNames, getAllBehaviors, getBehaviorsByLevel, hasGoldenOrb, loadGoldenOrb } from './behaviors/exports-reader.js';
|
|
16
16
|
export { BehaviorSummary, RegistryEntry, getBehaviorRegistry, getBehaviorSummary, getBehaviorsByDomain, getBehaviorsByOperations, searchBehaviors } from './behaviors/query.js';
|
|
17
|
+
export { BehaviorEmbeddingsManifest, getBehaviorEmbedding, getBehaviorEmbeddings } from './behaviors/embeddings.js';
|
|
17
18
|
export { StdCascadeOnDeleteCascadeCompletedPayload, StdCascadeOnDeleteCascadeFailedPayload, StdCascadeOnDeleteCascadeRowsFetchedPayload, StdCascadeOnDeleteCascadeRowsLoadedPayload, StdCascadeOnDeleteConfig, StdCascadeOnDeleteEventKey, StdCascadeOnDeleteParams, stdCascadeOnDelete, stdCascadeOnDeletePage, stdCascadeOnDeleteTrait } from './behaviors/functions/index.js';
|
|
18
19
|
export { compose, connect, ensureIdField, extractTrait, makeEntity, makeOrbital, makePage, makeSchema, mergeOrbitals, pipe, plural, wire } from '@almadar/core/builders';
|
|
19
20
|
export { O as OrbitalParamsManifest, P as ParamFieldDescriptor, d as dispatchOrbitalFactory, g as getOrbitalFactoryManifest, l as listOrganismOrbitalManifests } from './dispatch-x-qHdw0V.js';
|
package/dist/index.js
CHANGED
|
@@ -5079,6 +5079,35 @@ function extractPatternTypes(node, patterns) {
|
|
|
5079
5079
|
}
|
|
5080
5080
|
}
|
|
5081
5081
|
}
|
|
5082
|
+
|
|
5083
|
+
// behaviors/embeddings.ts
|
|
5084
|
+
var cache = null;
|
|
5085
|
+
async function loadManifest() {
|
|
5086
|
+
if (cache) return cache;
|
|
5087
|
+
try {
|
|
5088
|
+
const { readFileSync } = await import('fs');
|
|
5089
|
+
const { resolve, dirname } = await import('path');
|
|
5090
|
+
const { fileURLToPath } = await import('url');
|
|
5091
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
5092
|
+
const raw = readFileSync(resolve(dir, "behaviors-embeddings.json"), "utf-8");
|
|
5093
|
+
const parsed = JSON.parse(raw);
|
|
5094
|
+
if (typeof parsed?.version !== "string" || typeof parsed?.model !== "string" || typeof parsed?.dimensions !== "number" || !parsed?.vectors || typeof parsed.vectors !== "object") {
|
|
5095
|
+
return null;
|
|
5096
|
+
}
|
|
5097
|
+
cache = parsed;
|
|
5098
|
+
return cache;
|
|
5099
|
+
} catch {
|
|
5100
|
+
return null;
|
|
5101
|
+
}
|
|
5102
|
+
}
|
|
5103
|
+
async function getBehaviorEmbeddings() {
|
|
5104
|
+
return loadManifest();
|
|
5105
|
+
}
|
|
5106
|
+
async function getBehaviorEmbedding(behaviorName) {
|
|
5107
|
+
const manifest = await loadManifest();
|
|
5108
|
+
if (!manifest) return null;
|
|
5109
|
+
return manifest.vectors[behaviorName] ?? null;
|
|
5110
|
+
}
|
|
5082
5111
|
function isTraitReferenceObject(entry) {
|
|
5083
5112
|
return typeof entry === "object" && entry !== null && "ref" in entry && typeof entry.ref === "string" && !isInlineTrait(entry);
|
|
5084
5113
|
}
|
|
@@ -5700,6 +5729,6 @@ function generateStdLibDocs() {
|
|
|
5700
5729
|
return { modules, behaviors };
|
|
5701
5730
|
}
|
|
5702
5731
|
|
|
5703
|
-
export { ARRAY_OPERATORS, ASYNC_OPERATORS, BEHAVIOR_CATEGORY_DESCRIPTIONS, CORE_OPERATORS, FORMAT_OPERATORS, MATH_OPERATORS, MODULE_DESCRIPTIONS, OBJECT_OPERATORS, STD_OPERATORS as OPERATORS, OPERATOR_CATEGORIES, OPERATOR_NAMES, STD_MODULES, STD_OPERATORS, STD_OPERATORS_BY_MODULE, STD_OPERATOR_CATEGORIES, STR_OPERATORS, TIME_OPERATORS, VALIDATE_OPERATORS, dispatchOrbitalFactory, explodeBehaviorComposition, formatArity, generateBehaviorDoc, generateBehaviorsDocs, generateModuleDoc, generateModulesDocs, generateOperatorDoc, generateStdLibDocs, getAllBehaviorNames, getAllBehaviors, getAllStdOperators as getAllOperatorNames, getAllStdOperators, getBehaviorMetadata, getBehaviorRegistry, getBehaviorSummary, getBehaviorsByDomain, getBehaviorsByLevel, getBehaviorsByOperations, getCoreOperators, getFunctionFromOperator, getLambdaOperators, getModuleFromOperator, getModuleOperators, getOperatorMetaExtended, getOrbitalFactoryManifest, getStdEffectOperators, getStdLibStats, getStdOperatorMeta, getStdOperatorsByModule, getStdPureOperators, hasGoldenOrb, humanizeOperatorName, humanizeReturnType, isEffectOperatorExtended, isKnownStdOperator as isKnownOperator, isKnownOperatorExtended, isKnownStdOperator, isStdCategory, isStdEffectOperator, isStdGuardOperator, isStdOperator, listOrganismOrbitalManifests, loadGoldenOrb, makeStdOperator, searchBehaviors, stdCascadeOnDelete, stdCascadeOnDeletePage, stdCascadeOnDeleteTrait, validateBehaviorEvents, validateBehaviorStates, validateBehaviorStructure, validateStdOperatorArity as validateOperatorArity, validateOperatorArityExtended, validateStdOperatorArity };
|
|
5732
|
+
export { ARRAY_OPERATORS, ASYNC_OPERATORS, BEHAVIOR_CATEGORY_DESCRIPTIONS, CORE_OPERATORS, FORMAT_OPERATORS, MATH_OPERATORS, MODULE_DESCRIPTIONS, OBJECT_OPERATORS, STD_OPERATORS as OPERATORS, OPERATOR_CATEGORIES, OPERATOR_NAMES, STD_MODULES, STD_OPERATORS, STD_OPERATORS_BY_MODULE, STD_OPERATOR_CATEGORIES, STR_OPERATORS, TIME_OPERATORS, VALIDATE_OPERATORS, dispatchOrbitalFactory, explodeBehaviorComposition, formatArity, generateBehaviorDoc, generateBehaviorsDocs, generateModuleDoc, generateModulesDocs, generateOperatorDoc, generateStdLibDocs, getAllBehaviorNames, getAllBehaviors, getAllStdOperators as getAllOperatorNames, getAllStdOperators, getBehaviorEmbedding, getBehaviorEmbeddings, getBehaviorMetadata, getBehaviorRegistry, getBehaviorSummary, getBehaviorsByDomain, getBehaviorsByLevel, getBehaviorsByOperations, getCoreOperators, getFunctionFromOperator, getLambdaOperators, getModuleFromOperator, getModuleOperators, getOperatorMetaExtended, getOrbitalFactoryManifest, getStdEffectOperators, getStdLibStats, getStdOperatorMeta, getStdOperatorsByModule, getStdPureOperators, hasGoldenOrb, humanizeOperatorName, humanizeReturnType, isEffectOperatorExtended, isKnownStdOperator as isKnownOperator, isKnownOperatorExtended, isKnownStdOperator, isStdCategory, isStdEffectOperator, isStdGuardOperator, isStdOperator, listOrganismOrbitalManifests, loadGoldenOrb, makeStdOperator, searchBehaviors, stdCascadeOnDelete, stdCascadeOnDeletePage, stdCascadeOnDeleteTrait, validateBehaviorEvents, validateBehaviorStates, validateBehaviorStructure, validateStdOperatorArity as validateOperatorArity, validateOperatorArityExtended, validateStdOperatorArity };
|
|
5704
5733
|
//# sourceMappingURL=index.js.map
|
|
5705
5734
|
//# sourceMappingURL=index.js.map
|