@ddse/acm-examples 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/src/examples/entitlement/tasks.d.ts +44 -0
  2. package/dist/src/examples/entitlement/tasks.d.ts.map +1 -0
  3. package/dist/src/examples/entitlement/tasks.js +27 -0
  4. package/dist/src/examples/entitlement/tasks.js.map +1 -0
  5. package/dist/src/examples/entitlement/tools.d.ts +74 -0
  6. package/dist/src/examples/entitlement/tools.d.ts.map +1 -0
  7. package/dist/src/examples/entitlement/tools.js +63 -0
  8. package/dist/src/examples/entitlement/tools.js.map +1 -0
  9. package/dist/src/framework.d.ts +19 -0
  10. package/dist/src/framework.d.ts.map +1 -0
  11. package/dist/src/framework.js +42 -0
  12. package/dist/src/framework.js.map +1 -0
  13. package/dist/src/registries.d.ts +3 -0
  14. package/dist/src/registries.d.ts.map +1 -1
  15. package/dist/src/registries.js +11 -0
  16. package/dist/src/registries.js.map +1 -1
  17. package/dist/tests/entitlement.test.d.ts +2 -0
  18. package/dist/tests/entitlement.test.d.ts.map +1 -0
  19. package/dist/tests/entitlement.test.js +30 -0
  20. package/dist/tests/entitlement.test.js.map +1 -0
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +22 -9
  23. package/bin/acm-demo.ts +0 -495
  24. package/data/coaching/agents.json +0 -16
  25. package/data/coaching/transcripts.json +0 -37
  26. package/data/documents.json +0 -72
  27. package/data/entitlement/customers.json +0 -38
  28. package/data/entitlement/policies.json +0 -38
  29. package/data/incidents/incidents.json +0 -30
  30. package/data/incidents/routing_rules.json +0 -36
  31. package/data/invoices/invoices.json +0 -38
  32. package/data/invoices/purchase-orders.json +0 -38
  33. package/data/issues.json +0 -99
  34. package/data/knowledge/docs/kb-001.md +0 -7
  35. package/data/knowledge/docs/kb-002.md +0 -7
  36. package/data/knowledge/docs/kb-003.md +0 -9
  37. package/data/knowledge/index.json +0 -25
  38. package/data/orders.json +0 -106
  39. package/docs/examples-architecture.md +0 -144
  40. package/docs/successrun.md +0 -1022
  41. package/src/context/directives.ts +0 -366
  42. package/src/context/index.ts +0 -1
  43. package/src/data/coaching.ts +0 -50
  44. package/src/data/entitlement.ts +0 -60
  45. package/src/data/incidents.ts +0 -78
  46. package/src/data/invoices.ts +0 -103
  47. package/src/data/knowledge.ts +0 -77
  48. package/src/data/loader.ts +0 -80
  49. package/src/examples/scenarios.ts +0 -724
  50. package/src/goals/index.ts +0 -18
  51. package/src/policy.ts +0 -30
  52. package/src/registries.ts +0 -48
  53. package/src/renderer.ts +0 -82
  54. package/src/search/bm25.ts +0 -173
  55. package/src/search/index.ts +0 -2
  56. package/src/tasks/coaching.ts +0 -217
  57. package/src/tasks/entitlement.ts +0 -197
  58. package/src/tasks/incidents.ts +0 -277
  59. package/src/tasks/index.ts +0 -6
  60. package/src/tasks/invoices.ts +0 -269
  61. package/src/tasks/knowledge.ts +0 -169
  62. package/src/tasks/legacy.ts +0 -112
  63. package/src/tools/coaching/index.ts +0 -197
  64. package/src/tools/entitlement/index.ts +0 -199
  65. package/src/tools/incidents/index.ts +0 -185
  66. package/src/tools/index.ts +0 -192
  67. package/src/tools/invoices/index.ts +0 -165
  68. package/src/tools/knowledge/index.ts +0 -203
  69. package/tests/bm25.test.ts +0 -129
  70. package/tests/integration.test.ts +0 -163
  71. package/tests/plan-hydration.test.ts +0 -33
  72. package/tsconfig.json +0 -18
@@ -0,0 +1,44 @@
1
+ import { Task, type RunContext } from '@acm/sdk';
2
+ export declare class FetchCustomerProfileTask extends Task<{
3
+ customerId: string;
4
+ }, any> {
5
+ private readonly tool;
6
+ constructor();
7
+ execute(_ctx: RunContext, input: {
8
+ customerId: string;
9
+ }): Promise<any>;
10
+ verification(): string[];
11
+ }
12
+ export declare class EvaluateEntitlementTask extends Task<{
13
+ customer: any;
14
+ }, {
15
+ allow: boolean;
16
+ rationale: string[];
17
+ }> {
18
+ private readonly tool;
19
+ constructor();
20
+ execute(_ctx: RunContext, input: {
21
+ customer: any;
22
+ }): Promise<{
23
+ allow: boolean;
24
+ rationale: string[];
25
+ }>;
26
+ verification(): string[];
27
+ }
28
+ export declare class NotifySupervisorTask extends Task<{
29
+ customerId: string;
30
+ reason: string;
31
+ }, {
32
+ notified: boolean;
33
+ }> {
34
+ private readonly tool;
35
+ constructor();
36
+ execute(_ctx: RunContext, input: {
37
+ customerId: string;
38
+ reason: string;
39
+ }): Promise<{
40
+ notified: boolean;
41
+ }>;
42
+ verification(): string[];
43
+ }
44
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../../src/examples/entitlement/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGjD,qBAAa,wBAAyB,SAAQ,IAAI,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,CAAC;IAC7E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;;IAEjD,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAG7D,YAAY;CACb;AAED,qBAAa,uBAAwB,SAAQ,IAAI,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAA;CAAE,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;IAC3G,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;;IAEhD,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,GAAG,CAAA;KAAE;;;;IAGxD,YAAY;CACb;AAED,qBAAa,oBAAqB,SAAQ,IAAI,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;IAC3G,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;;IAE7C,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;IAG7E,YAAY;CACb"}
@@ -0,0 +1,27 @@
1
+ import { Task } from '@acm/sdk';
2
+ import { FetchCustomerProfileTool, EvaluateEntitlementTool, NotifySupervisorTool } from './tools.js';
3
+ export class FetchCustomerProfileTask extends Task {
4
+ tool = new FetchCustomerProfileTool();
5
+ constructor() { super('fetch_profile', 'fetch_customer_profile'); }
6
+ async execute(_ctx, input) {
7
+ return this.tool.call({ customerId: input.customerId });
8
+ }
9
+ verification() { return ['output != null']; }
10
+ }
11
+ export class EvaluateEntitlementTask extends Task {
12
+ tool = new EvaluateEntitlementTool();
13
+ constructor() { super('evaluate_entitlement', 'evaluate_entitlement'); }
14
+ async execute(_ctx, input) {
15
+ return this.tool.call({ customer: input.customer });
16
+ }
17
+ verification() { return ['typeof output.allow === "boolean"']; }
18
+ }
19
+ export class NotifySupervisorTask extends Task {
20
+ tool = new NotifySupervisorTool();
21
+ constructor() { super('notify_supervisor', 'notify_supervisor'); }
22
+ async execute(_ctx, input) {
23
+ return this.tool.call({ customerId: input.customerId, reason: input.reason });
24
+ }
25
+ verification() { return ['output.notified === true']; }
26
+ }
27
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/examples/entitlement/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAErG,MAAM,OAAO,wBAAyB,SAAQ,IAAiC;IAC5D,IAAI,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACvD,gBAAgB,KAAK,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACnE,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,KAA6B;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,YAAY,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC9C;AAED,MAAM,OAAO,uBAAwB,SAAQ,IAAgE;IAC1F,IAAI,GAAG,IAAI,uBAAuB,EAAE,CAAC;IACtD,gBAAgB,KAAK,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,KAAwB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,YAAY,KAAK,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,OAAO,oBAAqB,SAAQ,IAAmE;IAC1F,IAAI,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACnD,gBAAgB,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,KAA6C;QAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,YAAY,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;CACxD"}
@@ -0,0 +1,74 @@
1
+ import { Tool } from '@acm/sdk';
2
+ export declare class FetchCustomerProfileTool extends Tool<{
3
+ customerId: string;
4
+ }, any> {
5
+ name(): string;
6
+ description: string;
7
+ inputSchema: {
8
+ readonly type: "object";
9
+ readonly properties: {
10
+ readonly customerId: {
11
+ readonly type: "string";
12
+ };
13
+ };
14
+ readonly required: readonly ["customerId"];
15
+ readonly additionalProperties: false;
16
+ };
17
+ call(input: {
18
+ customerId: string;
19
+ }): Promise<any>;
20
+ }
21
+ export declare class EvaluateEntitlementTool extends Tool<{
22
+ customer: any;
23
+ }, {
24
+ allow: boolean;
25
+ rationale: string[];
26
+ }> {
27
+ name(): string;
28
+ description: string;
29
+ inputSchema: {
30
+ readonly type: "object";
31
+ readonly properties: {
32
+ readonly customer: {
33
+ readonly type: "object";
34
+ };
35
+ };
36
+ readonly required: readonly ["customer"];
37
+ readonly additionalProperties: true;
38
+ };
39
+ call(input: {
40
+ customer: any;
41
+ }): Promise<{
42
+ allow: boolean;
43
+ rationale: string[];
44
+ }>;
45
+ }
46
+ export declare class NotifySupervisorTool extends Tool<{
47
+ customerId: string;
48
+ reason: string;
49
+ }, {
50
+ notified: boolean;
51
+ }> {
52
+ name(): string;
53
+ description: string;
54
+ inputSchema: {
55
+ readonly type: "object";
56
+ readonly properties: {
57
+ readonly customerId: {
58
+ readonly type: "string";
59
+ };
60
+ readonly reason: {
61
+ readonly type: "string";
62
+ };
63
+ };
64
+ readonly required: readonly ["customerId", "reason"];
65
+ readonly additionalProperties: false;
66
+ };
67
+ call(_input: {
68
+ customerId: string;
69
+ reason: string;
70
+ }): Promise<{
71
+ notified: boolean;
72
+ }>;
73
+ }
74
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/examples/entitlement/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,qBAAa,wBAAyB,SAAQ,IAAI,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,CAAC;IAC7E,IAAI;IACJ,WAAW,SAAiD;IAC5D,WAAW;;;;;;;;;MAKA;IAEL,IAAI,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;CAKzC;AAED,qBAAa,uBAAwB,SAAQ,IAAI,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAA;CAAE,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;IAC3G,IAAI;IACJ,WAAW,SAAmE;IAC9E,WAAW;;;;;;;;;MAKA;IAEL,IAAI,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,GAAG,CAAA;KAAE;;;;CAqBpC;AAED,qBAAa,oBAAqB,SAAQ,IAAI,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;IAC3G,IAAI;IACJ,WAAW,SAAyC;IACpD,WAAW;;;;;;;;;;;;MAQA;IAEL,IAAI,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAG3F"}
@@ -0,0 +1,63 @@
1
+ import { Tool } from '@acm/sdk';
2
+ import fs from 'fs/promises';
3
+ export class FetchCustomerProfileTool extends Tool {
4
+ name() { return 'fetch_customer_profile'; }
5
+ description = 'Fetch customer profile from synthetic store';
6
+ inputSchema = {
7
+ type: 'object',
8
+ properties: { customerId: { type: 'string' } },
9
+ required: ['customerId'],
10
+ additionalProperties: false,
11
+ };
12
+ async call(input) {
13
+ const raw = await fs.readFile(new URL('../../../data/entitlement/customers.json', import.meta.url));
14
+ const data = JSON.parse(raw.toString());
15
+ return data.find((c) => c.id === input.customerId) ?? null;
16
+ }
17
+ }
18
+ export class EvaluateEntitlementTool extends Tool {
19
+ name() { return 'evaluate_entitlement'; }
20
+ description = 'Evaluate whether a customer is entitled based on policy rules';
21
+ inputSchema = {
22
+ type: 'object',
23
+ properties: { customer: { type: 'object' } },
24
+ required: ['customer'],
25
+ additionalProperties: true,
26
+ };
27
+ async call(input) {
28
+ const raw = await fs.readFile(new URL('../../../data/entitlement/policies.json', import.meta.url));
29
+ const p = JSON.parse(raw.toString());
30
+ const rationale = [];
31
+ if (input.customer.ageMonths < p.minAccountAgeMonths) {
32
+ rationale.push('Account too new');
33
+ }
34
+ if (!p.tiersAllowed.includes(input.customer.tier)) {
35
+ rationale.push('Tier not eligible');
36
+ }
37
+ const deniedByFlag = (input.customer.complianceFlags || []).find((f) => p.denyIfComplianceFlags.includes(f));
38
+ if (deniedByFlag) {
39
+ rationale.push(`Compliance flag: ${deniedByFlag}`);
40
+ }
41
+ const allow = rationale.length === 0;
42
+ if (allow)
43
+ rationale.push('Meets policy criteria');
44
+ return { allow, rationale };
45
+ }
46
+ }
47
+ export class NotifySupervisorTool extends Tool {
48
+ name() { return 'notify_supervisor'; }
49
+ description = 'Notify supervisor for denial branch';
50
+ inputSchema = {
51
+ type: 'object',
52
+ properties: {
53
+ customerId: { type: 'string' },
54
+ reason: { type: 'string' },
55
+ },
56
+ required: ['customerId', 'reason'],
57
+ additionalProperties: false,
58
+ };
59
+ async call(_input) {
60
+ return { notified: true };
61
+ }
62
+ }
63
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/examples/entitlement/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { DefaultStreamSink, ExternalContextProviderAdapter, type CapabilityRegistry } from '@acm/sdk';
2
+ import { ExecutionEngine } from '@acm/framework';
3
+ export type Provider = 'ollama' | 'vllm';
4
+ export interface DemoFrameworkOptions {
5
+ provider?: Provider;
6
+ model?: string;
7
+ baseUrl?: string;
8
+ capabilityRegistry: CapabilityRegistry;
9
+ toolRegistry: any;
10
+ policyEngine?: any;
11
+ contextProvider?: ExternalContextProviderAdapter;
12
+ stream?: DefaultStreamSink;
13
+ allowedTools?: string[];
14
+ engine?: ExecutionEngine;
15
+ }
16
+ export declare function createDemoFramework(opts: DemoFrameworkOptions): {
17
+ framework: any;
18
+ };
19
+ //# sourceMappingURL=framework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/framework.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,8BAA8B,EAC9B,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAgB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,eAAe,CAAC,EAAE,8BAA8B,CAAC;IACjD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB;;EAiD7D"}
@@ -0,0 +1,42 @@
1
+ import { DeterministicNucleus, } from '@acm/sdk';
2
+ import { createOllamaClient, createVLLMClient } from '@acm/llm';
3
+ import { ACMFramework, ExecutionEngine } from '@acm/framework';
4
+ export function createDemoFramework(opts) {
5
+ const provider = opts.provider ?? 'ollama';
6
+ const model = opts.model ?? 'llama3.1';
7
+ const llm = provider === 'ollama' ? createOllamaClient(model, opts.baseUrl) : createVLLMClient(model, opts.baseUrl);
8
+ if (!llm.generateWithTools) {
9
+ throw new Error('Selected LLM provider does not support structured tool calls required by Nucleus.');
10
+ }
11
+ let activeLedger;
12
+ const nucleusCall = async (prompt, tools, callConfig) => {
13
+ const toolDefs = tools.map(tool => ({
14
+ name: tool.name,
15
+ description: tool.description ?? 'Nucleus tool',
16
+ inputSchema: tool.inputSchema ?? { type: 'object', properties: {} },
17
+ }));
18
+ const response = await llm.generateWithTools([{ role: 'system', content: prompt }], toolDefs, { temperature: callConfig.temperature, seed: callConfig.seed, maxTokens: callConfig.maxTokens });
19
+ return {
20
+ reasoning: response.text,
21
+ toolCalls: (response.toolCalls ?? []).map(tc => ({ id: tc.id, name: tc.name, input: tc.arguments })),
22
+ raw: response.raw,
23
+ };
24
+ };
25
+ const framework = ACMFramework.create({
26
+ capabilityRegistry: opts.capabilityRegistry,
27
+ toolRegistry: opts.toolRegistry,
28
+ policyEngine: opts.policyEngine,
29
+ contextProvider: opts.contextProvider,
30
+ defaultStream: opts.stream,
31
+ nucleus: {
32
+ call: nucleusCall,
33
+ llmConfig: { provider: llm.name(), model, temperature: 0.1, maxTokens: 512 },
34
+ hooks: { preflight: true, postcheck: true },
35
+ allowedTools: opts.allowedTools,
36
+ factory: (ledger) => (config) => new DeterministicNucleus(config, nucleusCall, (entry) => ledger.append(entry.type, entry.details)),
37
+ },
38
+ execution: { engine: opts.engine ?? ExecutionEngine.ACM },
39
+ });
40
+ return { framework };
41
+ }
42
+ //# sourceMappingURL=framework.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/framework.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,8 @@ export declare class SimpleToolRegistry extends ToolRegistry {
14
14
  register(tool: Tool): void;
15
15
  get(name: string): Tool | undefined;
16
16
  list(): string[];
17
+ has(name: string): boolean;
18
+ getSpec(name: string): import("@ddse/acm-sdk").ToolSpec | undefined;
19
+ listSpecs(): import("@ddse/acm-sdk").ToolSpec[];
17
20
  }
18
21
  //# sourceMappingURL=registries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/registries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAExG,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,YAAY,CAAiC;IAErD,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAKlD,IAAI,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIvC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;CAGhD;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,KAAK,CAA2B;IAExC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,IAAI,IAAI,MAAM,EAAE;CAGjB"}
1
+ {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/registries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAExG,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,YAAY,CAAiC;IAErD,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAKlD,IAAI,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIvC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;CAGhD;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,KAAK,CAA2B;IAExC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,IAAI,IAAI,MAAM,EAAE;IAIhB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB,SAAS;CAKV"}
@@ -34,5 +34,16 @@ export class SimpleToolRegistry extends ToolRegistry {
34
34
  list() {
35
35
  return Array.from(this.tools.keys());
36
36
  }
37
+ has(name) {
38
+ return this.tools.has(name);
39
+ }
40
+ getSpec(name) {
41
+ return this.tools.get(name)?.spec;
42
+ }
43
+ listSpecs() {
44
+ return Array.from(this.tools.values())
45
+ .map(t => t.spec)
46
+ .filter((s) => s != null);
47
+ }
37
48
  }
38
49
  //# sourceMappingURL=registries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registries.js","sourceRoot":"","sources":["../../src/registries.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAyC,MAAM,eAAe,CAAC;AAExG,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IACtD,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAChC,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;IAErD,QAAQ,CAAC,UAAsB,EAAE,IAAU;QACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IACnD,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAC1C,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAExC,QAAQ,CAAC,IAAU;QACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"registries.js","sourceRoot":"","sources":["../../src/registries.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAyC,MAAM,eAAe,CAAC;AAExG,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IACtD,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAChC,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;IAErD,QAAQ,CAAC,UAAsB,EAAE,IAAU;QACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IACnD,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAC1C,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAExC,QAAQ,CAAC,IAAU;QACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACpC,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entitlement.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.test.d.ts","sourceRoot":"","sources":["../../tests/entitlement.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { MemoryLedger } from '@acm/runtime';
2
+ import { DefaultStreamSink } from '@acm/sdk';
3
+ import { SimpleCapabilityRegistry, SimpleToolRegistry } from '../src/registries.js';
4
+ import { createDemoFramework } from '../src/framework.js';
5
+ import { goals, contexts } from '../src/goals/index.js';
6
+ import { FetchCustomerProfileTask, EvaluateEntitlementTask, NotifySupervisorTask } from '../src/examples/entitlement/tasks.js';
7
+ import { FetchCustomerProfileTool, EvaluateEntitlementTool, NotifySupervisorTool } from '../src/examples/entitlement/tools.js';
8
+ async function run() {
9
+ const capabilityRegistry = new SimpleCapabilityRegistry();
10
+ capabilityRegistry.register({ name: 'fetch_customer_profile', sideEffects: false }, new FetchCustomerProfileTask());
11
+ capabilityRegistry.register({ name: 'evaluate_entitlement', sideEffects: false }, new EvaluateEntitlementTask());
12
+ capabilityRegistry.register({ name: 'notify_supervisor', sideEffects: false }, new NotifySupervisorTask());
13
+ const toolRegistry = new SimpleToolRegistry();
14
+ toolRegistry.register(new FetchCustomerProfileTool());
15
+ toolRegistry.register(new EvaluateEntitlementTool());
16
+ toolRegistry.register(new NotifySupervisorTool());
17
+ const { framework } = createDemoFramework({ capabilityRegistry, toolRegistry, stream: new DefaultStreamSink() });
18
+ const planned = await framework.plan({ goal: goals.entitlement, context: contexts.entitlement });
19
+ const exec = await framework.execute({ goal: planned.goal, context: planned.context, existingPlan: { plan: planned.selectedPlan, plannerResult: planned.result }, ledger: new MemoryLedger() });
20
+ const outputs = exec.execution.outputsByTask;
21
+ const keys = Object.keys(outputs);
22
+ if (!keys.length)
23
+ throw new Error('No task outputs');
24
+ console.log('Tasks executed:', keys);
25
+ return true;
26
+ }
27
+ if (import.meta.url === `file://${process.argv[1]}`) {
28
+ run().then(() => process.exit(0)).catch(err => { console.error(err); process.exit(1); });
29
+ }
30
+ //# sourceMappingURL=entitlement.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.test.js","sourceRoot":"","sources":["../../tests/entitlement.test.ts"],"names":[],"mappings":"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"}