@adobe/data 0.9.22 → 0.9.24
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/ecs/database/database.d.ts +1 -1
- package/dist/ecs/persistence-service/persistence-service.d.ts +1 -1
- package/dist/ecs/undo-redo-service/undo-redo-service.d.ts +1 -1
- package/dist/internal/data-view-32/data-view-32.d.ts +1 -5
- package/dist/internal/data-view-32/data-view-32.js +1 -0
- package/dist/internal/data-view-32/data-view-32.js.map +1 -1
- package/dist/service/agentic-service/action-error.d.ts +1 -0
- package/dist/service/agentic-service/action-error.js +3 -0
- package/dist/service/agentic-service/action-error.js.map +1 -0
- package/dist/service/agentic-service/action.d.ts +7 -0
- package/dist/service/agentic-service/action.js +3 -0
- package/dist/service/agentic-service/action.js.map +1 -0
- package/dist/service/agentic-service/agentic-service.d.ts +21 -0
- package/dist/service/agentic-service/agentic-service.js +3 -0
- package/dist/service/agentic-service/agentic-service.js.map +1 -0
- package/dist/service/agentic-service/create-from-config.d.ts +45 -0
- package/dist/service/agentic-service/create-from-config.js +85 -0
- package/dist/service/agentic-service/create-from-config.js.map +1 -0
- package/dist/service/agentic-service/create.d.ts +45 -0
- package/dist/service/agentic-service/create.interface-first-spike.type-test.d.ts +1 -0
- package/dist/service/agentic-service/create.interface-first-spike.type-test.js +119 -0
- package/dist/service/agentic-service/create.interface-first-spike.type-test.js.map +1 -0
- package/dist/service/agentic-service/create.js +85 -0
- package/dist/service/agentic-service/create.js.map +1 -0
- package/dist/service/agentic-service/create.test.d.ts +1 -0
- package/dist/service/agentic-service/create.test.js +542 -0
- package/dist/service/agentic-service/create.test.js.map +1 -0
- package/dist/service/agentic-service/create.type-test.d.ts +1 -0
- package/dist/service/agentic-service/create.type-test.js +121 -0
- package/dist/service/agentic-service/create.type-test.js.map +1 -0
- package/dist/service/agentic-service/index.d.ts +1 -0
- package/dist/service/agentic-service/index.js +3 -0
- package/dist/service/agentic-service/index.js.map +1 -0
- package/dist/service/agentic-service/public.d.ts +5 -0
- package/dist/service/agentic-service/public.js +3 -0
- package/dist/service/agentic-service/public.js.map +1 -0
- package/dist/service/agentic-service/state.d.ts +5 -0
- package/dist/service/agentic-service/state.js +3 -0
- package/dist/service/agentic-service/state.js.map +1 -0
- package/dist/service/dynamic-service/create.interface-first-spike.type-test.d.ts +1 -0
- package/dist/service/dynamic-service/create.interface-first-spike.type-test.js +118 -0
- package/dist/service/dynamic-service/create.interface-first-spike.type-test.js.map +1 -0
- package/dist/service/index.d.ts +1 -1
- package/dist/service/index.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typed-buffer/data-view-32.d.ts +5 -0
- package/dist/typed-buffer/data-view-32.js +3 -0
- package/dist/typed-buffer/data-view-32.js.map +1 -0
- package/dist/typed-buffer/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@ import { Components } from "../store/components.js";
|
|
|
10
10
|
import { ArchetypeComponents } from "../store/archetype-components.js";
|
|
11
11
|
import { RequiredComponents } from "../required-components.js";
|
|
12
12
|
import { EntitySelectOptions } from "../store/entity-select-options.js";
|
|
13
|
-
import { Service } from "../../service/
|
|
13
|
+
import type { Service } from "../../service/index.js";
|
|
14
14
|
import { createDatabase } from "./public/create-database.js";
|
|
15
15
|
import { ResourceSchemas } from "../resource-schemas.js";
|
|
16
16
|
import { ComponentSchemas } from "../component-schemas.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observe } from "../../observe/index.js";
|
|
2
2
|
import { TransactionResult } from "../database/transactional-store/transactional-store.js";
|
|
3
|
-
import { Service } from "../../service/
|
|
3
|
+
import type { Service } from "../../service/index.js";
|
|
4
4
|
export interface UndoRedoService<C = unknown> extends Service {
|
|
5
5
|
undoStack: Observe<TransactionResult<C>[]>;
|
|
6
6
|
undoStackIndex: Observe<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-view-32.js","sourceRoot":"","sources":["../../../src/internal/data-view-32/data-view-32.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"data-view-32.js","sourceRoot":"","sources":["../../../src/internal/data-view-32/data-view-32.ts"],"names":[],"mappings":"AAAA,uDAAuD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ActionError = string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-error.js","sourceRoot":"","sources":["../../../src/service/agentic-service/action-error.ts"],"names":[],"mappings":"AAAA,uDAAuD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Schema } from "../../schema/index.js";
|
|
2
|
+
import type { ActionError } from "./action-error.js";
|
|
3
|
+
export type Action<S extends Schema | false = Schema> = {
|
|
4
|
+
description: string;
|
|
5
|
+
schema: S;
|
|
6
|
+
execute: Schema.ToType<S> extends void ? (() => Promise<void | ActionError> | void) : ((state: Schema.ToType<S>) => Promise<void | ActionError> | void);
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/service/agentic-service/action.ts"],"names":[],"mappings":"AAAA,uDAAuD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Observe } from "../../observe/index.js";
|
|
2
|
+
import type { Service } from "../index.js";
|
|
3
|
+
import type { Action } from "./action.js";
|
|
4
|
+
import type { ActionError } from "./action-error.js";
|
|
5
|
+
import type { State } from "./state.js";
|
|
6
|
+
/**
|
|
7
|
+
* An agentic service provides a set of valid states and actions
|
|
8
|
+
* which are conditionally available based upon the current state.
|
|
9
|
+
* This is designed to serve as a foundation for agentic systems.
|
|
10
|
+
* An MCP or other agentic protocol could be built upon this service interface.
|
|
11
|
+
*/
|
|
12
|
+
export interface AgenticService extends Service {
|
|
13
|
+
states: Observe<{
|
|
14
|
+
[key: string]: State;
|
|
15
|
+
}>;
|
|
16
|
+
actions: Observe<{
|
|
17
|
+
[key: string]: Action;
|
|
18
|
+
}>;
|
|
19
|
+
execute: (action: string, input: unknown) => Promise<void | ActionError>;
|
|
20
|
+
}
|
|
21
|
+
export * as AgenticService from "./public.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentic-service.js","sourceRoot":"","sources":["../../../src/service/agentic-service/agentic-service.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAsBvD,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Observe } from "../../observe/index.js";
|
|
2
|
+
import { Schema } from "../../schema/index.js";
|
|
3
|
+
import { AgenticService } from "./agentic-service.js";
|
|
4
|
+
/** State declaration: has top-level `type` (JSON Schema) + `description` */
|
|
5
|
+
type StateDeclaration<S extends Schema & {
|
|
6
|
+
type: string;
|
|
7
|
+
} = Schema & {
|
|
8
|
+
type: string;
|
|
9
|
+
}> = S & {
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
/** Action declaration: `description`, optional `input` schema, no `type` */
|
|
13
|
+
type ActionDeclaration<I extends Schema | false | undefined = undefined> = {
|
|
14
|
+
description: string;
|
|
15
|
+
input?: I;
|
|
16
|
+
type?: never;
|
|
17
|
+
};
|
|
18
|
+
type DeclarationEntry = StateDeclaration | ActionDeclaration<Schema | false | undefined>;
|
|
19
|
+
type Declarations = Record<string, DeclarationEntry>;
|
|
20
|
+
type ConditionalFromDeclarations<D extends Declarations> = Partial<{
|
|
21
|
+
[K in keyof D]: Observe<boolean>;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an AgenticService from a config with interface, implementation, and optional conditional.
|
|
25
|
+
*
|
|
26
|
+
* Interface: flat map of states (have `type`) and actions (have `description`, optional `input`).
|
|
27
|
+
* Implementation: same keys, states → Observe<...>, actions → (input?) => ...
|
|
28
|
+
* Conditional: optional per-key Observe<boolean> for enablement.
|
|
29
|
+
*/
|
|
30
|
+
export declare function create<const D extends Declarations>(config: {
|
|
31
|
+
description: string;
|
|
32
|
+
interface: D;
|
|
33
|
+
implementation: ImplementationFromDeclarations<D>;
|
|
34
|
+
conditional?: ConditionalFromDeclarations<D>;
|
|
35
|
+
}): AgenticService.AgenticService;
|
|
36
|
+
/** Implementation map derived from interface: states → Observe, actions → execute fn */
|
|
37
|
+
export type ImplementationFromDeclarations<D extends Declarations> = {
|
|
38
|
+
[K in keyof D]: D[K] extends {
|
|
39
|
+
type: string;
|
|
40
|
+
} ? Observe<Schema.ToType<D[K]>> : D[K] extends {
|
|
41
|
+
input: infer I extends Schema | false;
|
|
42
|
+
} ? ExecuteFromSchema<I> : ExecuteFromSchema<false>;
|
|
43
|
+
};
|
|
44
|
+
type ExecuteFromSchema<S extends Schema | false> = S extends false ? (() => Promise<void | AgenticService.Error> | void) : ((input: Schema.ToType<S>) => Promise<void | AgenticService.Error> | void);
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Observe } from "../../observe/index.js";
|
|
3
|
+
function isStateDeclaration(entry) {
|
|
4
|
+
return "type" in entry && typeof entry.type === "string";
|
|
5
|
+
}
|
|
6
|
+
function getActionSchema(entry) {
|
|
7
|
+
if (isStateDeclaration(entry))
|
|
8
|
+
return false;
|
|
9
|
+
const actionEntry = entry;
|
|
10
|
+
return actionEntry.input ?? false;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates an AgenticService from a config with interface, implementation, and optional conditional.
|
|
14
|
+
*
|
|
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.
|
|
18
|
+
*/
|
|
19
|
+
export function create(config) {
|
|
20
|
+
const { interface: iface, implementation, conditional } = config;
|
|
21
|
+
const alwaysEnabled = Observe.fromConstant(true);
|
|
22
|
+
const stateKeys = [];
|
|
23
|
+
const actionKeys = [];
|
|
24
|
+
const stateSchemas = {};
|
|
25
|
+
const actionMeta = {};
|
|
26
|
+
for (const [key, entry] of Object.entries(iface)) {
|
|
27
|
+
if (isStateDeclaration(entry)) {
|
|
28
|
+
stateKeys.push(key);
|
|
29
|
+
stateSchemas[key] = entry;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
actionKeys.push(key);
|
|
33
|
+
const a = entry;
|
|
34
|
+
actionMeta[key] = {
|
|
35
|
+
description: a.description,
|
|
36
|
+
schema: getActionSchema(entry),
|
|
37
|
+
execute: implementation[key],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const perStateObservables = {};
|
|
42
|
+
for (const key of stateKeys) {
|
|
43
|
+
const valueObs = implementation[key];
|
|
44
|
+
const enabledObs = conditional?.[key] ?? alwaysEnabled;
|
|
45
|
+
perStateObservables[key] = Observe.fromProperties({
|
|
46
|
+
enabled: enabledObs,
|
|
47
|
+
value: valueObs,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const enabledObservables = {};
|
|
51
|
+
for (const key of actionKeys) {
|
|
52
|
+
enabledObservables[key] = conditional?.[key] ?? alwaysEnabled;
|
|
53
|
+
}
|
|
54
|
+
const states = Observe.withMap(Observe.fromProperties(perStateObservables), (raw) => {
|
|
55
|
+
const result = {};
|
|
56
|
+
for (const [key, entry] of Object.entries(raw)) {
|
|
57
|
+
const { enabled, value } = entry;
|
|
58
|
+
if (enabled) {
|
|
59
|
+
result[key] = { schema: stateSchemas[key], value };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
});
|
|
64
|
+
const actions = Observe.withMap(Observe.fromProperties(enabledObservables), (enabledMap) => {
|
|
65
|
+
const result = {};
|
|
66
|
+
for (const [key, enabled] of Object.entries(enabledMap)) {
|
|
67
|
+
if (!enabled)
|
|
68
|
+
continue;
|
|
69
|
+
const meta = actionMeta[key];
|
|
70
|
+
if (meta)
|
|
71
|
+
result[key] = meta;
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
});
|
|
75
|
+
let currentActions = {};
|
|
76
|
+
actions((a) => { currentActions = a; });
|
|
77
|
+
const execute = async (actionName, input) => {
|
|
78
|
+
const entry = currentActions[actionName];
|
|
79
|
+
if (!entry)
|
|
80
|
+
return `Action "${actionName}" is not available`;
|
|
81
|
+
return entry.execute(input);
|
|
82
|
+
};
|
|
83
|
+
return { serviceName: "agentic-service", states, actions, execute };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=create-from-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-from-config.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create-from-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Observe } from "../../observe/index.js";
|
|
2
|
+
import { Schema } from "../../schema/index.js";
|
|
3
|
+
import { AgenticService } from "./agentic-service.js";
|
|
4
|
+
/** State declaration: has top-level `type` (JSON Schema) + `description` */
|
|
5
|
+
type StateDeclaration<S extends Schema & {
|
|
6
|
+
type: string;
|
|
7
|
+
} = Schema & {
|
|
8
|
+
type: string;
|
|
9
|
+
}> = S & {
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
/** Action declaration: `description`, optional `input` schema, no `type` */
|
|
13
|
+
type ActionDeclaration<I extends Schema | false | undefined = undefined> = {
|
|
14
|
+
description: string;
|
|
15
|
+
input?: I;
|
|
16
|
+
type?: never;
|
|
17
|
+
};
|
|
18
|
+
type DeclarationEntry = StateDeclaration | ActionDeclaration<Schema | false | undefined>;
|
|
19
|
+
type Declarations = Record<string, DeclarationEntry>;
|
|
20
|
+
type ConditionalFromDeclarations<D extends Declarations> = Partial<{
|
|
21
|
+
[K in keyof D]: Observe<boolean>;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an AgenticService from a config with interface, implementation, and optional conditional.
|
|
25
|
+
*
|
|
26
|
+
* Interface: flat map of states (have `type`) and actions (have `description`, optional `input`).
|
|
27
|
+
* Implementation: same keys, states → Observe<...>, actions → (input?) => ...
|
|
28
|
+
* Conditional: optional per-key Observe<boolean> for enablement.
|
|
29
|
+
*/
|
|
30
|
+
export declare function create<const D extends Declarations>(config: {
|
|
31
|
+
description: string;
|
|
32
|
+
interface: D;
|
|
33
|
+
implementation: ImplementationFromDeclarations<D>;
|
|
34
|
+
conditional?: ConditionalFromDeclarations<D>;
|
|
35
|
+
}): AgenticService.AgenticService;
|
|
36
|
+
/** Implementation map derived from interface: states → Observe, actions → execute fn */
|
|
37
|
+
export type ImplementationFromDeclarations<D extends Declarations> = {
|
|
38
|
+
[K in keyof D]: D[K] extends {
|
|
39
|
+
type: string;
|
|
40
|
+
} ? Observe<Schema.ToType<D[K]>> : D[K] extends {
|
|
41
|
+
input: infer I extends Schema | false;
|
|
42
|
+
} ? ExecuteFromSchema<I> : ExecuteFromSchema<false>;
|
|
43
|
+
};
|
|
44
|
+
type ExecuteFromSchema<S extends Schema | false> = S extends false ? (() => Promise<void | AgenticService.ActionError> | void) : ((input: Schema.ToType<S>) => Promise<void | AgenticService.ActionError> | void);
|
|
45
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Observe } from "../../observe/index.js";
|
|
3
|
+
import { createFromConfig, } from "./create-from-config.js";
|
|
4
|
+
const iface = {
|
|
5
|
+
health: {
|
|
6
|
+
type: "number",
|
|
7
|
+
description: "Current health points",
|
|
8
|
+
},
|
|
9
|
+
stats: {
|
|
10
|
+
type: "object",
|
|
11
|
+
description: "Current player stats",
|
|
12
|
+
properties: {
|
|
13
|
+
hp: { type: "number" },
|
|
14
|
+
label: { type: "string" },
|
|
15
|
+
},
|
|
16
|
+
required: ["hp"],
|
|
17
|
+
additionalProperties: false,
|
|
18
|
+
},
|
|
19
|
+
heal: {
|
|
20
|
+
description: "Increase health by amount",
|
|
21
|
+
input: { type: "number" },
|
|
22
|
+
},
|
|
23
|
+
configure: {
|
|
24
|
+
description: "Configure stats",
|
|
25
|
+
input: {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
hp: { type: "number" },
|
|
29
|
+
label: { type: "string" },
|
|
30
|
+
},
|
|
31
|
+
required: ["hp"],
|
|
32
|
+
additionalProperties: false,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
reset: {
|
|
36
|
+
description: "Reset values",
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
createFromConfig({
|
|
40
|
+
description: "Player health and actions for agentic access",
|
|
41
|
+
declaration: iface,
|
|
42
|
+
implementation: {
|
|
43
|
+
health: Observe.fromConstant(42),
|
|
44
|
+
stats: Observe.fromConstant({ hp: 100, label: "ok" }),
|
|
45
|
+
heal: (input) => {
|
|
46
|
+
},
|
|
47
|
+
configure: (input) => {
|
|
48
|
+
},
|
|
49
|
+
reset: () => { },
|
|
50
|
+
},
|
|
51
|
+
conditional: {
|
|
52
|
+
health: Observe.fromConstant(true),
|
|
53
|
+
heal: Observe.fromConstant(false),
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
createFromConfig({
|
|
57
|
+
description: "Player health and actions for agentic access",
|
|
58
|
+
declaration: iface,
|
|
59
|
+
implementation: {
|
|
60
|
+
// @ts-expect-error - health state requires Observe<number>
|
|
61
|
+
health: Observe.fromConstant("wrong"),
|
|
62
|
+
stats: Observe.fromConstant({ hp: 100 }),
|
|
63
|
+
heal: (input) => { },
|
|
64
|
+
configure: (input) => { },
|
|
65
|
+
reset: () => { },
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
createFromConfig({
|
|
69
|
+
description: "Player health and actions for agentic access",
|
|
70
|
+
declaration: iface,
|
|
71
|
+
implementation: {
|
|
72
|
+
health: Observe.fromConstant(100),
|
|
73
|
+
stats: Observe.fromConstant({ hp: 100 }),
|
|
74
|
+
// @ts-expect-error - heal input schema requires number
|
|
75
|
+
heal: (input) => { },
|
|
76
|
+
configure: (input) => { },
|
|
77
|
+
reset: () => { },
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
createFromConfig({
|
|
81
|
+
description: "Player health and actions for agentic access",
|
|
82
|
+
declaration: iface,
|
|
83
|
+
implementation: {
|
|
84
|
+
health: Observe.fromConstant(100),
|
|
85
|
+
stats: Observe.fromConstant({ hp: 100 }),
|
|
86
|
+
heal: (input) => { },
|
|
87
|
+
configure: (input) => { },
|
|
88
|
+
// @ts-expect-error - reset action has no input schema
|
|
89
|
+
reset: (input) => { },
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
createFromConfig({
|
|
93
|
+
description: "Player health and actions for agentic access",
|
|
94
|
+
declaration: iface,
|
|
95
|
+
// @ts-expect-error - implementation must include every definition key
|
|
96
|
+
implementation: {
|
|
97
|
+
health: Observe.fromConstant(100),
|
|
98
|
+
stats: Observe.fromConstant({ hp: 100 }),
|
|
99
|
+
heal: (input) => { },
|
|
100
|
+
configure: (input) => { },
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
createFromConfig({
|
|
104
|
+
description: "Player health and actions for agentic access",
|
|
105
|
+
declaration: iface,
|
|
106
|
+
implementation: {
|
|
107
|
+
health: Observe.fromConstant(100),
|
|
108
|
+
stats: Observe.fromConstant({ hp: 100 }),
|
|
109
|
+
heal: (input) => { },
|
|
110
|
+
configure: (input) => { },
|
|
111
|
+
reset: () => { },
|
|
112
|
+
},
|
|
113
|
+
conditional: {
|
|
114
|
+
health: Observe.fromConstant(true),
|
|
115
|
+
// @ts-expect-error - conditional values must be Observe<boolean>
|
|
116
|
+
heal: Observe.fromConstant(1),
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=create.interface-first-spike.type-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.interface-first-spike.type-test.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create.interface-first-spike.type-test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EACH,gBAAgB,GAEnB,MAAM,yBAAyB,CAAC;AAyBjC,MAAM,KAAK,GAAG;IACV,MAAM,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;KACvC;IACD,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;QACnC,UAAU,EAAE;YACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,oBAAoB,EAAE,KAAK;KAC9B;IACD,IAAI,EAAE;QACF,WAAW,EAAE,2BAA2B;QACxC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5B;IACD,SAAS,EAAE;QACP,WAAW,EAAE,iBAAiB;QAC9B,KAAK,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;YAChB,oBAAoB,EAAE,KAAK;SAC9B;KACJ;IACD,KAAK,EAAE;QACH,WAAW,EAAE,cAAc;KAC9B;CACK,CAAC;AAEX,gBAAgB,CAAC;IACb,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QAEhB,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAErB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB;IACD,WAAW,EAAE;QACT,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;KACpC;CACJ,CAAC,CAAC;AAEH,gBAAgB,CAAC;IACb,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE;QACZ,2DAA2D;QAC3D,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;QACrC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACnB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACxB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB;CACJ,CAAC,CAAC;AAEH,gBAAgB,CAAC;IACb,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACxC,uDAAuD;QACvD,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,GAAE,CAAC;QAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACxB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB;CACJ,CAAC,CAAC;AAEH,gBAAgB,CAAC;IACb,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACnB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACxB,sDAAsD;QACtD,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,GAAE,CAAC;KAC/B;CACJ,CAAC,CAAC;AAEH,gBAAgB,CAAC;IACb,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,KAAK;IAClB,sEAAsE;IACtE,cAAc,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACnB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;KAC3B;CACJ,CAAC,CAAC;AAEH,gBAAgB,CAAC;IACb,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACnB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QACxB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB;IACD,WAAW,EAAE;QACT,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;QAClC,iEAAiE;QACjE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;KAChC;CACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Observe } from "../../observe/index.js";
|
|
3
|
+
function isStateDeclaration(entry) {
|
|
4
|
+
return "type" in entry && typeof entry.type === "string";
|
|
5
|
+
}
|
|
6
|
+
function getActionSchema(entry) {
|
|
7
|
+
if (isStateDeclaration(entry))
|
|
8
|
+
return false;
|
|
9
|
+
const actionEntry = entry;
|
|
10
|
+
return actionEntry.input ?? false;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates an AgenticService from a config with interface, implementation, and optional conditional.
|
|
14
|
+
*
|
|
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.
|
|
18
|
+
*/
|
|
19
|
+
export function create(config) {
|
|
20
|
+
const { interface: iface, implementation, conditional } = config;
|
|
21
|
+
const alwaysEnabled = Observe.fromConstant(true);
|
|
22
|
+
const stateKeys = [];
|
|
23
|
+
const actionKeys = [];
|
|
24
|
+
const stateSchemas = {};
|
|
25
|
+
const actionMeta = {};
|
|
26
|
+
for (const [key, entry] of Object.entries(iface)) {
|
|
27
|
+
if (isStateDeclaration(entry)) {
|
|
28
|
+
stateKeys.push(key);
|
|
29
|
+
stateSchemas[key] = entry;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
actionKeys.push(key);
|
|
33
|
+
const a = entry;
|
|
34
|
+
actionMeta[key] = {
|
|
35
|
+
description: a.description,
|
|
36
|
+
schema: getActionSchema(entry),
|
|
37
|
+
execute: implementation[key],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const perStateObservables = {};
|
|
42
|
+
for (const key of stateKeys) {
|
|
43
|
+
const valueObs = implementation[key];
|
|
44
|
+
const enabledObs = conditional?.[key] ?? alwaysEnabled;
|
|
45
|
+
perStateObservables[key] = Observe.fromProperties({
|
|
46
|
+
enabled: enabledObs,
|
|
47
|
+
value: valueObs,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const enabledObservables = {};
|
|
51
|
+
for (const key of actionKeys) {
|
|
52
|
+
enabledObservables[key] = conditional?.[key] ?? alwaysEnabled;
|
|
53
|
+
}
|
|
54
|
+
const states = Observe.withMap(Observe.fromProperties(perStateObservables), (raw) => {
|
|
55
|
+
const result = {};
|
|
56
|
+
for (const [key, entry] of Object.entries(raw)) {
|
|
57
|
+
const { enabled, value } = entry;
|
|
58
|
+
if (enabled) {
|
|
59
|
+
result[key] = { schema: stateSchemas[key], value };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
});
|
|
64
|
+
const actions = Observe.withMap(Observe.fromProperties(enabledObservables), (enabledMap) => {
|
|
65
|
+
const result = {};
|
|
66
|
+
for (const [key, enabled] of Object.entries(enabledMap)) {
|
|
67
|
+
if (!enabled)
|
|
68
|
+
continue;
|
|
69
|
+
const meta = actionMeta[key];
|
|
70
|
+
if (meta)
|
|
71
|
+
result[key] = meta;
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
});
|
|
75
|
+
let currentActions = {};
|
|
76
|
+
actions((a) => { currentActions = a; });
|
|
77
|
+
const execute = async (actionName, input) => {
|
|
78
|
+
const entry = currentActions[actionName];
|
|
79
|
+
if (!entry)
|
|
80
|
+
return `Action "${actionName}" is not available`;
|
|
81
|
+
return entry.execute(input);
|
|
82
|
+
};
|
|
83
|
+
return { serviceName: "agentic-service", states, actions, execute };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/service/agentic-service/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|