@adobe/data 0.9.29 → 0.9.31

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.
@@ -1,22 +1,24 @@
1
1
  import { Observe } from "../../observe/index.js";
2
2
  import { Schema } from "../../schema/index.js";
3
3
  import { AgenticService } from "./agentic-service.js";
4
- import type { AgenticServiceLinks } from "./agentic-service-links.js";
5
- /** State declaration: has top-level `type` (JSON Schema) + `description` */
6
- type StateDeclaration<S extends Schema & {
7
- type: string;
8
- } = Schema & {
9
- type: string;
10
- }> = S & {
4
+ /** State declaration: kind + schema for value + description */
5
+ type StateDeclaration<S extends Schema = Schema> = {
6
+ type: "state";
7
+ schema: S;
11
8
  description: string;
12
9
  };
13
- /** Action declaration: `description`, optional `input` schema, no `type` */
10
+ /** Action declaration: kind + description + optional input schema */
14
11
  type ActionDeclaration<I extends Schema | false | undefined = undefined> = {
12
+ type: "action";
15
13
  description: string;
16
14
  input?: I;
17
- type?: never;
18
15
  };
19
- type DeclarationEntry = StateDeclaration | ActionDeclaration<Schema | false | undefined>;
16
+ /** Link declaration: kind + optional description */
17
+ type LinkDeclaration = {
18
+ type: "link";
19
+ description?: string;
20
+ };
21
+ type DeclarationEntry = StateDeclaration | ActionDeclaration<Schema | false | undefined> | LinkDeclaration;
20
22
  type Declarations = Record<string, DeclarationEntry>;
21
23
  type ConditionalFromDeclarations<D extends Declarations> = Partial<{
22
24
  [K in keyof D]: Observe<boolean>;
@@ -24,25 +26,28 @@ type ConditionalFromDeclarations<D extends Declarations> = Partial<{
24
26
  /**
25
27
  * Creates an AgenticService from a config with interface, implementation, and optional conditional.
26
28
  *
27
- * Interface: flat map of states (have `type`) and actions (have `description`, optional `input`).
28
- * Implementation: same keys, states Observe<...>, actions (input?) => ...
29
- * Conditional: optional per-key Observe<boolean> for enablement.
29
+ * Interface: flat map of declarations. Each entry has type "state" | "action" | "link":
30
+ * - state: { type: "state", schema, description }implementation: Observe<value>
31
+ * - action: { type: "action", description, input? } → implementation: (input?) => ...
32
+ * - link: { type: "link", description? } → implementation: AgenticService | Observe<AgenticService>
33
+ * Conditional: optional per-key Observe<boolean> for enablement (applies to states, actions, and links).
30
34
  */
31
35
  export declare function create<const D extends Declarations>(config: {
32
- description: string;
33
36
  interface: D;
34
37
  implementation: ImplementationFromDeclarations<D>;
35
38
  conditional?: ConditionalFromDeclarations<D>;
36
- /** Optional map of links to other agentic services; fixed Record or Observe for conditional links. */
37
- links?: AgenticServiceLinks | Observe<AgenticServiceLinks>;
38
39
  }): AgenticService;
39
- /** Implementation map derived from interface: states → Observe, actions → execute fn */
40
+ /** Implementation map derived from interface: state → Observe, action → execute fn, link → AgenticService | Observe<AgenticService> */
40
41
  export type ImplementationFromDeclarations<D extends Declarations> = {
41
42
  [K in keyof D]: D[K] extends {
42
- type: string;
43
- } ? Observe<Schema.ToType<D[K]>> : D[K] extends {
44
- input: infer I extends Schema | false;
45
- } ? ExecuteFromSchema<I> : ExecuteFromSchema<false>;
43
+ type: "state";
44
+ schema: infer S extends Schema;
45
+ } ? Observe<Schema.ToType<S>> : D[K] extends {
46
+ type: "action";
47
+ input?: infer I extends Schema | false | undefined;
48
+ } ? ExecuteFromSchema<I extends undefined ? false : I> : D[K] extends {
49
+ type: "link";
50
+ } ? AgenticService | Observe<AgenticService> : never;
46
51
  };
47
52
  type ExecuteFromSchema<S extends Schema | false> = S extends false ? (() => Promise<void | AgenticService.ActionError> | void) : ((input: Schema.ToType<S>) => Promise<void | AgenticService.ActionError> | void);
48
53
  export {};
@@ -1,42 +1,41 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  import { Observe } from "../../observe/index.js";
3
- function isStateDeclaration(entry) {
4
- return "type" in entry && typeof entry.type === "string";
5
- }
6
3
  function getActionSchema(entry) {
7
- if (isStateDeclaration(entry))
8
- return false;
9
- const actionEntry = entry;
10
- return actionEntry.input ?? false;
4
+ return entry.input ?? false;
11
5
  }
12
6
  /**
13
7
  * Creates an AgenticService from a config with interface, implementation, and optional conditional.
14
8
  *
15
- * Interface: flat map of states (have `type`) and actions (have `description`, optional `input`).
16
- * Implementation: same keys, states Observe<...>, actions (input?) => ...
17
- * Conditional: optional per-key Observe<boolean> for enablement.
9
+ * Interface: flat map of declarations. Each entry has type "state" | "action" | "link":
10
+ * - state: { type: "state", schema, description }implementation: Observe<value>
11
+ * - action: { type: "action", description, input? } → implementation: (input?) => ...
12
+ * - link: { type: "link", description? } → implementation: AgenticService | Observe<AgenticService>
13
+ * Conditional: optional per-key Observe<boolean> for enablement (applies to states, actions, and links).
18
14
  */
19
15
  export function create(config) {
20
- const { interface: iface, implementation, conditional, links: linksConfig } = config;
16
+ const { interface: iface, implementation, conditional } = config;
21
17
  const alwaysEnabled = Observe.fromConstant(true);
22
18
  const stateKeys = [];
23
19
  const actionKeys = [];
20
+ const linkKeys = [];
24
21
  const stateSchemas = {};
25
22
  const actionMeta = {};
26
23
  for (const [key, entry] of Object.entries(iface)) {
27
- if (isStateDeclaration(entry)) {
24
+ if (entry.type === "state") {
28
25
  stateKeys.push(key);
29
- stateSchemas[key] = entry;
26
+ stateSchemas[key] = entry.schema;
30
27
  }
31
- else {
28
+ else if (entry.type === "action") {
32
29
  actionKeys.push(key);
33
- const a = entry;
34
30
  actionMeta[key] = {
35
- description: a.description,
31
+ description: entry.description,
36
32
  schema: getActionSchema(entry),
37
33
  execute: implementation[key],
38
34
  };
39
35
  }
36
+ else if (entry.type === "link") {
37
+ linkKeys.push(key);
38
+ }
40
39
  }
41
40
  const perStateObservables = {};
42
41
  for (const key of stateKeys) {
@@ -51,6 +50,14 @@ export function create(config) {
51
50
  for (const key of actionKeys) {
52
51
  enabledObservables[key] = conditional?.[key] ?? alwaysEnabled;
53
52
  }
53
+ const implRecord = implementation;
54
+ const perLinkObservables = {};
55
+ for (const key of linkKeys) {
56
+ const raw = implRecord[key];
57
+ const linkObs = typeof raw === "function" ? raw : Observe.fromConstant(raw);
58
+ const enabledObs = conditional?.[key] ?? alwaysEnabled;
59
+ perLinkObservables[key] = Observe.withMap(Observe.fromProperties({ enabled: enabledObs, value: linkObs }), (x) => x);
60
+ }
54
61
  const states = Observe.withMap(Observe.fromProperties(perStateObservables), (raw) => {
55
62
  const result = {};
56
63
  for (const [key, entry] of Object.entries(raw)) {
@@ -80,10 +87,16 @@ export function create(config) {
80
87
  return `Action "${actionName}" is not available`;
81
88
  return entry.execute(input);
82
89
  };
83
- const links = linksConfig !== undefined
84
- ? typeof linksConfig === "function"
85
- ? linksConfig
86
- : Observe.fromConstant(linksConfig)
90
+ const links = linkKeys.length > 0
91
+ ? Observe.withMap(Observe.fromProperties(perLinkObservables), (raw) => {
92
+ const result = {};
93
+ for (const [key, entry] of Object.entries(raw)) {
94
+ const { enabled, value } = entry;
95
+ if (enabled && value)
96
+ result[key] = value;
97
+ }
98
+ return result;
99
+ })
87
100
  : undefined;
88
101
  return {
89
102
  serviceName: "agentic-service",
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create.ts"],"names":[],"mappings":"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"}