@ddse/acm-examples 0.5.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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/bin/acm-demo.ts +495 -0
  4. package/data/coaching/agents.json +16 -0
  5. package/data/coaching/transcripts.json +37 -0
  6. package/data/documents.json +72 -0
  7. package/data/entitlement/customers.json +38 -0
  8. package/data/entitlement/policies.json +38 -0
  9. package/data/incidents/incidents.json +30 -0
  10. package/data/incidents/routing_rules.json +36 -0
  11. package/data/invoices/invoices.json +38 -0
  12. package/data/invoices/purchase-orders.json +38 -0
  13. package/data/issues.json +99 -0
  14. package/data/knowledge/docs/kb-001.md +7 -0
  15. package/data/knowledge/docs/kb-002.md +7 -0
  16. package/data/knowledge/docs/kb-003.md +9 -0
  17. package/data/knowledge/index.json +25 -0
  18. package/data/orders.json +106 -0
  19. package/dist/bin/acm-demo.d.ts +3 -0
  20. package/dist/bin/acm-demo.d.ts.map +1 -0
  21. package/dist/bin/acm-demo.js +392 -0
  22. package/dist/bin/acm-demo.js.map +1 -0
  23. package/dist/src/context/directives.d.ts +3 -0
  24. package/dist/src/context/directives.d.ts.map +1 -0
  25. package/dist/src/context/directives.js +325 -0
  26. package/dist/src/context/directives.js.map +1 -0
  27. package/dist/src/context/index.d.ts +2 -0
  28. package/dist/src/context/index.d.ts.map +1 -0
  29. package/dist/src/context/index.js +2 -0
  30. package/dist/src/context/index.js.map +1 -0
  31. package/dist/src/data/coaching.d.ts +19 -0
  32. package/dist/src/data/coaching.d.ts.map +1 -0
  33. package/dist/src/data/coaching.js +22 -0
  34. package/dist/src/data/coaching.js.map +1 -0
  35. package/dist/src/data/entitlement.d.ts +25 -0
  36. package/dist/src/data/entitlement.d.ts.map +1 -0
  37. package/dist/src/data/entitlement.js +26 -0
  38. package/dist/src/data/entitlement.js.map +1 -0
  39. package/dist/src/data/incidents.d.ts +23 -0
  40. package/dist/src/data/incidents.d.ts.map +1 -0
  41. package/dist/src/data/incidents.js +37 -0
  42. package/dist/src/data/incidents.js.map +1 -0
  43. package/dist/src/data/invoices.d.ts +34 -0
  44. package/dist/src/data/invoices.d.ts.map +1 -0
  45. package/dist/src/data/invoices.js +49 -0
  46. package/dist/src/data/invoices.js.map +1 -0
  47. package/dist/src/data/knowledge.d.ts +11 -0
  48. package/dist/src/data/knowledge.d.ts.map +1 -0
  49. package/dist/src/data/knowledge.js +57 -0
  50. package/dist/src/data/knowledge.js.map +1 -0
  51. package/dist/src/data/loader.d.ts +4 -0
  52. package/dist/src/data/loader.d.ts.map +1 -0
  53. package/dist/src/data/loader.js +69 -0
  54. package/dist/src/data/loader.js.map +1 -0
  55. package/dist/src/examples/scenarios.d.ts +23 -0
  56. package/dist/src/examples/scenarios.d.ts.map +1 -0
  57. package/dist/src/examples/scenarios.js +609 -0
  58. package/dist/src/examples/scenarios.js.map +1 -0
  59. package/dist/src/goals/index.d.ts +8 -0
  60. package/dist/src/goals/index.d.ts.map +1 -0
  61. package/dist/src/goals/index.js +12 -0
  62. package/dist/src/goals/index.js.map +1 -0
  63. package/dist/src/policy.d.ts +5 -0
  64. package/dist/src/policy.d.ts.map +1 -0
  65. package/dist/src/policy.js +24 -0
  66. package/dist/src/policy.js.map +1 -0
  67. package/dist/src/registries.d.ts +18 -0
  68. package/dist/src/registries.d.ts.map +1 -0
  69. package/dist/src/registries.js +38 -0
  70. package/dist/src/registries.js.map +1 -0
  71. package/dist/src/renderer.d.ts +9 -0
  72. package/dist/src/renderer.d.ts.map +1 -0
  73. package/dist/src/renderer.js +76 -0
  74. package/dist/src/renderer.js.map +1 -0
  75. package/dist/src/search/bm25.d.ts +68 -0
  76. package/dist/src/search/bm25.d.ts.map +1 -0
  77. package/dist/src/search/bm25.js +131 -0
  78. package/dist/src/search/bm25.js.map +1 -0
  79. package/dist/src/search/index.d.ts +2 -0
  80. package/dist/src/search/index.d.ts.map +1 -0
  81. package/dist/src/search/index.js +3 -0
  82. package/dist/src/search/index.js.map +1 -0
  83. package/dist/src/tasks/coaching.d.ts +30 -0
  84. package/dist/src/tasks/coaching.d.ts.map +1 -0
  85. package/dist/src/tasks/coaching.js +143 -0
  86. package/dist/src/tasks/coaching.js.map +1 -0
  87. package/dist/src/tasks/entitlement.d.ts +29 -0
  88. package/dist/src/tasks/entitlement.d.ts.map +1 -0
  89. package/dist/src/tasks/entitlement.js +135 -0
  90. package/dist/src/tasks/entitlement.js.map +1 -0
  91. package/dist/src/tasks/incidents.d.ts +42 -0
  92. package/dist/src/tasks/incidents.d.ts.map +1 -0
  93. package/dist/src/tasks/incidents.js +189 -0
  94. package/dist/src/tasks/incidents.js.map +1 -0
  95. package/dist/src/tasks/index.d.ts +7 -0
  96. package/dist/src/tasks/index.d.ts.map +1 -0
  97. package/dist/src/tasks/index.js +7 -0
  98. package/dist/src/tasks/index.js.map +1 -0
  99. package/dist/src/tasks/invoices.d.ts +40 -0
  100. package/dist/src/tasks/invoices.d.ts.map +1 -0
  101. package/dist/src/tasks/invoices.js +180 -0
  102. package/dist/src/tasks/invoices.js.map +1 -0
  103. package/dist/src/tasks/knowledge.d.ts +23 -0
  104. package/dist/src/tasks/knowledge.d.ts.map +1 -0
  105. package/dist/src/tasks/knowledge.js +115 -0
  106. package/dist/src/tasks/knowledge.js.map +1 -0
  107. package/dist/src/tasks/legacy.d.ts +50 -0
  108. package/dist/src/tasks/legacy.d.ts.map +1 -0
  109. package/dist/src/tasks/legacy.js +85 -0
  110. package/dist/src/tasks/legacy.js.map +1 -0
  111. package/dist/src/tools/coaching/index.d.ts +49 -0
  112. package/dist/src/tools/coaching/index.d.ts.map +1 -0
  113. package/dist/src/tools/coaching/index.js +119 -0
  114. package/dist/src/tools/coaching/index.js.map +1 -0
  115. package/dist/src/tools/entitlement/index.d.ts +52 -0
  116. package/dist/src/tools/entitlement/index.d.ts.map +1 -0
  117. package/dist/src/tools/entitlement/index.js +120 -0
  118. package/dist/src/tools/entitlement/index.js.map +1 -0
  119. package/dist/src/tools/incidents/index.d.ts +55 -0
  120. package/dist/src/tools/incidents/index.d.ts.map +1 -0
  121. package/dist/src/tools/incidents/index.js +109 -0
  122. package/dist/src/tools/incidents/index.js.map +1 -0
  123. package/dist/src/tools/index.d.ts +90 -0
  124. package/dist/src/tools/index.d.ts.map +1 -0
  125. package/dist/src/tools/index.js +109 -0
  126. package/dist/src/tools/index.js.map +1 -0
  127. package/dist/src/tools/invoices/index.d.ts +56 -0
  128. package/dist/src/tools/invoices/index.d.ts.map +1 -0
  129. package/dist/src/tools/invoices/index.js +85 -0
  130. package/dist/src/tools/invoices/index.js.map +1 -0
  131. package/dist/src/tools/knowledge/index.d.ts +52 -0
  132. package/dist/src/tools/knowledge/index.d.ts.map +1 -0
  133. package/dist/src/tools/knowledge/index.js +120 -0
  134. package/dist/src/tools/knowledge/index.js.map +1 -0
  135. package/dist/tests/bm25.test.d.ts +2 -0
  136. package/dist/tests/bm25.test.d.ts.map +1 -0
  137. package/dist/tests/bm25.test.js +98 -0
  138. package/dist/tests/bm25.test.js.map +1 -0
  139. package/dist/tests/integration.test.d.ts +2 -0
  140. package/dist/tests/integration.test.d.ts.map +1 -0
  141. package/dist/tests/integration.test.js +126 -0
  142. package/dist/tests/integration.test.js.map +1 -0
  143. package/dist/tests/plan-hydration.test.d.ts +2 -0
  144. package/dist/tests/plan-hydration.test.d.ts.map +1 -0
  145. package/dist/tests/plan-hydration.test.js +28 -0
  146. package/dist/tests/plan-hydration.test.js.map +1 -0
  147. package/dist/tsconfig.tsbuildinfo +1 -0
  148. package/docs/examples-architecture.md +144 -0
  149. package/docs/successrun.md +1022 -0
  150. package/package.json +33 -0
  151. package/src/context/directives.ts +366 -0
  152. package/src/context/index.ts +1 -0
  153. package/src/data/coaching.ts +50 -0
  154. package/src/data/entitlement.ts +60 -0
  155. package/src/data/incidents.ts +78 -0
  156. package/src/data/invoices.ts +103 -0
  157. package/src/data/knowledge.ts +77 -0
  158. package/src/data/loader.ts +80 -0
  159. package/src/examples/scenarios.ts +724 -0
  160. package/src/goals/index.ts +18 -0
  161. package/src/policy.ts +30 -0
  162. package/src/registries.ts +48 -0
  163. package/src/renderer.ts +82 -0
  164. package/src/search/bm25.ts +173 -0
  165. package/src/search/index.ts +2 -0
  166. package/src/tasks/coaching.ts +217 -0
  167. package/src/tasks/entitlement.ts +197 -0
  168. package/src/tasks/incidents.ts +277 -0
  169. package/src/tasks/index.ts +6 -0
  170. package/src/tasks/invoices.ts +269 -0
  171. package/src/tasks/knowledge.ts +169 -0
  172. package/src/tasks/legacy.ts +112 -0
  173. package/src/tools/coaching/index.ts +197 -0
  174. package/src/tools/entitlement/index.ts +199 -0
  175. package/src/tools/incidents/index.ts +185 -0
  176. package/src/tools/index.ts +192 -0
  177. package/src/tools/invoices/index.ts +165 -0
  178. package/src/tools/knowledge/index.ts +203 -0
  179. package/tests/bm25.test.ts +129 -0
  180. package/tests/integration.test.ts +163 -0
  181. package/tests/plan-hydration.test.ts +33 -0
  182. package/tsconfig.json +18 -0
@@ -0,0 +1,5 @@
1
+ import { PolicyEngine, type PolicyDecision } from '@ddse/acm-sdk';
2
+ export declare class SimplePolicyEngine implements PolicyEngine {
3
+ evaluate(action: 'plan.admit' | 'task.pre' | 'task.post', payload: any): Promise<PolicyDecision>;
4
+ }
5
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAElE,qBAAa,kBAAmB,YAAW,YAAY;IAC/C,QAAQ,CACZ,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,WAAW,EAC/C,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,cAAc,CAAC;CAsB3B"}
@@ -0,0 +1,24 @@
1
+ export class SimplePolicyEngine {
2
+ async evaluate(action, payload) {
3
+ // Simple rule: deny high-risk refunds
4
+ if (action === 'task.pre' && payload.action === 'create_refund') {
5
+ // In a real implementation, we'd check risk from context
6
+ // For demo, randomly allow/deny based on amount
7
+ if (payload.amount && payload.amount > 100) {
8
+ return {
9
+ allow: false,
10
+ reason: 'Refund amount exceeds policy limit',
11
+ };
12
+ }
13
+ }
14
+ // Default: allow
15
+ return {
16
+ allow: true,
17
+ limits: {
18
+ timeoutMs: 30000,
19
+ retries: 3,
20
+ },
21
+ };
22
+ }
23
+ }
24
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,QAAQ,CACZ,MAA+C,EAC/C,OAAY;QAEZ,sCAAsC;QACtC,IAAI,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YAChE,yDAAyD;YACzD,gDAAgD;YAChD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC3C,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,oCAAoC;iBAC7C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE;gBACN,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,CAAC;aACX;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { CapabilityRegistry, ToolRegistry, type Capability, type Task, type Tool } from '@ddse/acm-sdk';
2
+ export declare class SimpleCapabilityRegistry extends CapabilityRegistry {
3
+ private tasks;
4
+ private capabilities;
5
+ register(capability: Capability, task: Task): void;
6
+ list(): Capability[];
7
+ has(name: string): boolean;
8
+ resolve(name: string): Task | undefined;
9
+ inputSchema(name: string): unknown | undefined;
10
+ outputSchema(name: string): unknown | undefined;
11
+ }
12
+ export declare class SimpleToolRegistry extends ToolRegistry {
13
+ private tools;
14
+ register(tool: Tool): void;
15
+ get(name: string): Tool | undefined;
16
+ list(): string[];
17
+ }
18
+ //# sourceMappingURL=registries.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,38 @@
1
+ // Concrete registry implementations
2
+ import { CapabilityRegistry, ToolRegistry } from '@ddse/acm-sdk';
3
+ export class SimpleCapabilityRegistry extends CapabilityRegistry {
4
+ tasks = new Map();
5
+ capabilities = new Map();
6
+ register(capability, task) {
7
+ this.capabilities.set(capability.name, capability);
8
+ this.tasks.set(capability.name, task);
9
+ }
10
+ list() {
11
+ return Array.from(this.capabilities.values());
12
+ }
13
+ has(name) {
14
+ return this.capabilities.has(name);
15
+ }
16
+ resolve(name) {
17
+ return this.tasks.get(name);
18
+ }
19
+ inputSchema(name) {
20
+ return this.capabilities.get(name)?.inputSchema;
21
+ }
22
+ outputSchema(name) {
23
+ return this.capabilities.get(name)?.outputSchema;
24
+ }
25
+ }
26
+ export class SimpleToolRegistry extends ToolRegistry {
27
+ tools = new Map();
28
+ register(tool) {
29
+ this.tools.set(tool.name(), tool);
30
+ }
31
+ get(name) {
32
+ return this.tools.get(name);
33
+ }
34
+ list() {
35
+ return Array.from(this.tools.keys());
36
+ }
37
+ }
38
+ //# sourceMappingURL=registries.js.map
@@ -0,0 +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"}
@@ -0,0 +1,9 @@
1
+ export declare class CLIRenderer {
2
+ private taskStatus;
3
+ renderPlannerToken(chunk: any): void;
4
+ renderTaskUpdate(update: any): void;
5
+ renderLedgerEntry(entry: any): void;
6
+ renderSummary(result: any): void;
7
+ private getIconForType;
8
+ }
9
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":"AACA,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAA6B;IAE/C,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAuBpC,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAqBnC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAKnC,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAehC,OAAO,CAAC,cAAc;CAavB"}
@@ -0,0 +1,76 @@
1
+ // CLI renderer for streaming output
2
+ export class CLIRenderer {
3
+ taskStatus = new Map();
4
+ renderPlannerToken(chunk) {
5
+ if (chunk.delta) {
6
+ process.stdout.write(chunk.delta);
7
+ }
8
+ const summary = [];
9
+ if (typeof chunk.plans === 'number') {
10
+ const label = chunk.plans === 1 ? 'plan' : 'plans';
11
+ summary.push(`Generated ${chunk.plans} ${label}.`);
12
+ }
13
+ if (chunk.rationale) {
14
+ summary.push(chunk.rationale);
15
+ }
16
+ if (summary.length > 0) {
17
+ process.stdout.write(`\n\n${summary.join('\n\n')}\n\n`);
18
+ }
19
+ if (chunk.done && summary.length === 0) {
20
+ process.stdout.write('\n\n');
21
+ }
22
+ }
23
+ renderTaskUpdate(update) {
24
+ const { taskId, status, step, output, error } = update;
25
+ if (status) {
26
+ this.taskStatus.set(taskId, status);
27
+ }
28
+ if (status === 'running') {
29
+ console.log(`\n[${taskId}] Task started`);
30
+ }
31
+ else if (status === 'completed') {
32
+ console.log(`[${taskId}] ✓ Task completed`);
33
+ if (output) {
34
+ console.log(` Output: ${JSON.stringify(output, null, 2)}`);
35
+ }
36
+ }
37
+ else if (status === 'failed') {
38
+ console.error(`[${taskId}] ✗ Task failed: ${error}`);
39
+ }
40
+ else if (step) {
41
+ console.log(`[${taskId}] → ${step}`);
42
+ }
43
+ }
44
+ renderLedgerEntry(entry) {
45
+ const icon = this.getIconForType(entry.type);
46
+ console.log(`${icon} [${entry.type}] ${JSON.stringify(entry.details)}`);
47
+ }
48
+ renderSummary(result) {
49
+ console.log('\n' + '='.repeat(60));
50
+ console.log('EXECUTION SUMMARY');
51
+ console.log('='.repeat(60));
52
+ const taskEntries = Object.entries(result.outputsByTask ?? {});
53
+ const ledgerEntries = Array.isArray(result.ledger) ? result.ledger.length : 0;
54
+ console.log(`Total tasks: ${taskEntries.length}`);
55
+ console.log(`Ledger entries: ${ledgerEntries}`);
56
+ console.log('\nOutputs:');
57
+ for (const [taskId, record] of taskEntries) {
58
+ const output = record && typeof record === 'object' && 'output' in record ? record.output : record;
59
+ console.log(` ${taskId}:`, JSON.stringify(output, null, 2));
60
+ }
61
+ }
62
+ getIconForType(type) {
63
+ switch (type) {
64
+ case 'PLAN_SELECTED': return '📋';
65
+ case 'GUARD_EVAL': return '🚦';
66
+ case 'TASK_START': return '▶️ ';
67
+ case 'TASK_END': return '✅';
68
+ case 'POLICY_PRE': return '🔒';
69
+ case 'POLICY_POST': return '🔓';
70
+ case 'VERIFICATION': return '✔️ ';
71
+ case 'ERROR': return '❌';
72
+ default: return '•';
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Document interface for BM25 search
3
+ */
4
+ export interface Document {
5
+ id: string;
6
+ title?: string;
7
+ content: string;
8
+ [key: string]: any;
9
+ }
10
+ /**
11
+ * Search result with score
12
+ */
13
+ export interface SearchResult {
14
+ document: Document;
15
+ score: number;
16
+ }
17
+ /**
18
+ * BM25 parameters
19
+ */
20
+ export interface BM25Params {
21
+ k1?: number;
22
+ b?: number;
23
+ }
24
+ /**
25
+ * BM25 Search Engine
26
+ *
27
+ * Implements the BM25 ranking function for full-text search.
28
+ * BM25 is a probabilistic ranking function used by search engines
29
+ * to estimate the relevance of documents to a query.
30
+ */
31
+ export declare class BM25Search {
32
+ private documents;
33
+ private documentTokens;
34
+ private documentFrequency;
35
+ private averageDocumentLength;
36
+ private k1;
37
+ private b;
38
+ constructor(params?: BM25Params);
39
+ /**
40
+ * Index documents for search
41
+ */
42
+ index(documents: Document[]): void;
43
+ /**
44
+ * Extract searchable text from document
45
+ */
46
+ private extractText;
47
+ /**
48
+ * Calculate IDF (Inverse Document Frequency)
49
+ */
50
+ private idf;
51
+ /**
52
+ * Calculate BM25 score for a document
53
+ */
54
+ private score;
55
+ /**
56
+ * Search for documents matching the query
57
+ */
58
+ search(query: string, limit?: number): SearchResult[];
59
+ /**
60
+ * Get all indexed documents
61
+ */
62
+ getDocuments(): Document[];
63
+ /**
64
+ * Get document count
65
+ */
66
+ getDocumentCount(): number;
67
+ }
68
+ //# sourceMappingURL=bm25.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bm25.d.ts","sourceRoot":"","sources":["../../../src/search/bm25.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAeD;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,CAAC,CAAS;gBAEN,MAAM,GAAE,UAAe;IAKnC;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAuBlC;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,GAAG;IAQX;;OAEG;IACH,OAAO,CAAC,KAAK;IAqBb;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAwBzD;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE;IAI1B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
@@ -0,0 +1,131 @@
1
+ // Simple BM25 search implementation for ACM examples
2
+ /**
3
+ * Simple tokenizer
4
+ */
5
+ function tokenize(text) {
6
+ if (!text)
7
+ return [];
8
+ return text
9
+ .toLowerCase()
10
+ .replace(/[^\w\s]/g, ' ')
11
+ .split(/\s+/)
12
+ .filter((token) => token.length > 0);
13
+ }
14
+ /**
15
+ * BM25 Search Engine
16
+ *
17
+ * Implements the BM25 ranking function for full-text search.
18
+ * BM25 is a probabilistic ranking function used by search engines
19
+ * to estimate the relevance of documents to a query.
20
+ */
21
+ export class BM25Search {
22
+ documents = [];
23
+ documentTokens = new Map();
24
+ documentFrequency = new Map();
25
+ averageDocumentLength = 0;
26
+ k1;
27
+ b;
28
+ constructor(params = {}) {
29
+ this.k1 = params.k1 ?? 1.5;
30
+ this.b = params.b ?? 0.75;
31
+ }
32
+ /**
33
+ * Index documents for search
34
+ */
35
+ index(documents) {
36
+ this.documents = documents;
37
+ this.documentTokens.clear();
38
+ this.documentFrequency.clear();
39
+ // Tokenize documents
40
+ let totalLength = 0;
41
+ for (const doc of documents) {
42
+ const text = this.extractText(doc);
43
+ const tokens = tokenize(text);
44
+ this.documentTokens.set(doc.id, tokens);
45
+ totalLength += tokens.length;
46
+ // Update document frequency
47
+ const uniqueTokens = new Set(tokens);
48
+ for (const token of uniqueTokens) {
49
+ this.documentFrequency.set(token, (this.documentFrequency.get(token) || 0) + 1);
50
+ }
51
+ }
52
+ this.averageDocumentLength = totalLength / documents.length;
53
+ }
54
+ /**
55
+ * Extract searchable text from document
56
+ */
57
+ extractText(doc) {
58
+ const parts = [];
59
+ if (doc.title)
60
+ parts.push(doc.title);
61
+ if (doc.content)
62
+ parts.push(doc.content);
63
+ return parts.join(' ');
64
+ }
65
+ /**
66
+ * Calculate IDF (Inverse Document Frequency)
67
+ */
68
+ idf(term) {
69
+ const df = this.documentFrequency.get(term) || 0;
70
+ if (df === 0)
71
+ return 0;
72
+ const n = this.documents.length;
73
+ return Math.log((n - df + 0.5) / (df + 0.5) + 1);
74
+ }
75
+ /**
76
+ * Calculate BM25 score for a document
77
+ */
78
+ score(docId, queryTokens) {
79
+ const tokens = this.documentTokens.get(docId);
80
+ if (!tokens)
81
+ return 0;
82
+ const docLength = tokens.length;
83
+ let score = 0;
84
+ for (const queryToken of queryTokens) {
85
+ const termFreq = tokens.filter((t) => t === queryToken).length;
86
+ if (termFreq === 0)
87
+ continue;
88
+ const idf = this.idf(queryToken);
89
+ const numerator = termFreq * (this.k1 + 1);
90
+ const denominator = termFreq + this.k1 * (1 - this.b + this.b * (docLength / this.averageDocumentLength));
91
+ score += idf * (numerator / denominator);
92
+ }
93
+ return score;
94
+ }
95
+ /**
96
+ * Search for documents matching the query
97
+ */
98
+ search(query, limit = 10) {
99
+ if (this.documents.length === 0) {
100
+ return [];
101
+ }
102
+ const queryTokens = tokenize(query);
103
+ if (queryTokens.length === 0) {
104
+ return [];
105
+ }
106
+ // Score all documents
107
+ const results = [];
108
+ for (const doc of this.documents) {
109
+ const score = this.score(doc.id, queryTokens);
110
+ if (score > 0) {
111
+ results.push({ document: doc, score });
112
+ }
113
+ }
114
+ // Sort by score (descending) and limit
115
+ results.sort((a, b) => b.score - a.score);
116
+ return results.slice(0, limit);
117
+ }
118
+ /**
119
+ * Get all indexed documents
120
+ */
121
+ getDocuments() {
122
+ return this.documents;
123
+ }
124
+ /**
125
+ * Get document count
126
+ */
127
+ getDocumentCount() {
128
+ return this.documents.length;
129
+ }
130
+ }
131
+ //# sourceMappingURL=bm25.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bm25.js","sourceRoot":"","sources":["../../../src/search/bm25.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { BM25Search, type Document, type SearchResult, type BM25Params } from './bm25.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/search/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Search functionality for ACM examples
2
+ export { BM25Search } from './bm25.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/search/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAqD,MAAM,WAAW,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Task, type RunContext } from '@ddse/acm-sdk';
2
+ import { type AnalyzeTranscriptInput, type AnalyzeTranscriptOutput, type GenerateFeedbackInput, type GenerateFeedbackOutput, type LogCoachingNoteInput, type LogCoachingNoteOutput } from '../tools/coaching/index.js';
3
+ export declare class AnalyzeTranscriptTask extends Task<AnalyzeTranscriptInput, AnalyzeTranscriptOutput> {
4
+ constructor();
5
+ idemKey(_ctx: RunContext, input: AnalyzeTranscriptInput): string | undefined;
6
+ policyInput(_ctx: RunContext, input: AnalyzeTranscriptInput): Record<string, unknown>;
7
+ verification(): string[];
8
+ execute(ctx: RunContext, input: AnalyzeTranscriptInput): Promise<AnalyzeTranscriptOutput>;
9
+ }
10
+ export interface GenerateFeedbackTaskInput {
11
+ transcriptId?: string;
12
+ metrics?: GenerateFeedbackInput['metrics'];
13
+ }
14
+ export declare class GenerateFeedbackTask extends Task<GenerateFeedbackTaskInput, GenerateFeedbackOutput> {
15
+ constructor();
16
+ policyInput(ctx: RunContext, input: GenerateFeedbackTaskInput): Record<string, unknown>;
17
+ verification(): string[];
18
+ execute(ctx: RunContext, input: GenerateFeedbackTaskInput): Promise<GenerateFeedbackOutput>;
19
+ private resolveInput;
20
+ }
21
+ export interface LogCoachingNoteTaskInput extends Partial<LogCoachingNoteInput> {
22
+ }
23
+ export declare class LogCoachingNoteTask extends Task<LogCoachingNoteTaskInput, LogCoachingNoteOutput> {
24
+ constructor();
25
+ policyInput(ctx: RunContext, input: LogCoachingNoteTaskInput): Record<string, unknown>;
26
+ verification(): string[];
27
+ execute(ctx: RunContext, input: LogCoachingNoteTaskInput): Promise<LogCoachingNoteOutput>;
28
+ private resolveInput;
29
+ }
30
+ //# sourceMappingURL=coaching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coaching.d.ts","sourceRoot":"","sources":["../../../src/tasks/coaching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,qBAAsB,SAAQ,IAAI,CAC7C,sBAAsB,EACtB,uBAAuB,CACxB;;IAKC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS;IAI5E,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOrF,YAAY,IAAI,MAAM,EAAE;IAIlB,OAAO,CACX,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;CAgBpC;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC5C;AAED,qBAAa,oBAAqB,SAAQ,IAAI,CAC5C,yBAAyB,EACzB,sBAAsB,CACvB;;IAKC,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASvF,YAAY,IAAI,MAAM,EAAE;IAIlB,OAAO,CACX,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,sBAAsB,CAAC;IAiBlC,OAAO,CAAC,YAAY;CAmCrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;CAAG;AAElF,qBAAa,mBAAoB,SAAQ,IAAI,CAC3C,wBAAwB,EACxB,qBAAqB,CACtB;;IAKC,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAStF,YAAY,IAAI,MAAM,EAAE;IAIlB,OAAO,CACX,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAiBjC,OAAO,CAAC,YAAY;CAoCrB"}
@@ -0,0 +1,143 @@
1
+ import { Task } from '@ddse/acm-sdk';
2
+ export class AnalyzeTranscriptTask extends Task {
3
+ constructor() {
4
+ super('task-coaching-analyze-transcript', 'coaching.analyze_transcript');
5
+ }
6
+ idemKey(_ctx, input) {
7
+ return input?.transcriptId ? `coaching:transcript:${input.transcriptId}` : undefined;
8
+ }
9
+ policyInput(_ctx, input) {
10
+ return {
11
+ action: 'analyze_transcript',
12
+ transcriptId: input.transcriptId,
13
+ };
14
+ }
15
+ verification() {
16
+ return ['typeof output.sentimentScore === "number"', 'Array.isArray(output.highlights)'];
17
+ }
18
+ async execute(ctx, input) {
19
+ const tool = ctx.getTool('analyze_transcript');
20
+ if (!tool) {
21
+ throw new Error('analyze_transcript tool is not registered');
22
+ }
23
+ const result = (await tool.call(input));
24
+ ctx.stream?.emit('task', {
25
+ taskId: this.id,
26
+ stage: 'coaching_transcript_analyzed',
27
+ transcriptId: input.transcriptId,
28
+ sentimentScore: result.sentimentScore,
29
+ complianceScore: result.complianceScore,
30
+ });
31
+ return result;
32
+ }
33
+ }
34
+ export class GenerateFeedbackTask extends Task {
35
+ constructor() {
36
+ super('task-coaching-generate-feedback', 'coaching.generate_feedback');
37
+ }
38
+ policyInput(ctx, input) {
39
+ const resolved = this.resolveInput(ctx, input);
40
+ return {
41
+ action: 'generate_feedback',
42
+ transcriptId: resolved.transcriptId,
43
+ metrics: resolved.metrics,
44
+ };
45
+ }
46
+ verification() {
47
+ return ['typeof output.feedbackSummary === "string"', 'Array.isArray(output.actionItems)'];
48
+ }
49
+ async execute(ctx, input) {
50
+ const tool = ctx.getTool('generate_feedback');
51
+ if (!tool) {
52
+ throw new Error('generate_feedback tool is not registered');
53
+ }
54
+ const resolved = this.resolveInput(ctx, input);
55
+ const result = (await tool.call(resolved));
56
+ ctx.stream?.emit('task', {
57
+ taskId: this.id,
58
+ stage: 'coaching_feedback_generated',
59
+ transcriptId: resolved.transcriptId,
60
+ escalationRequired: result.escalationRequired,
61
+ });
62
+ return result;
63
+ }
64
+ resolveInput(ctx, input) {
65
+ const analyzeOutput = ctx.outputs?.['task-coaching-analyze-transcript'];
66
+ const transcriptId = input?.transcriptId ?? analyzeOutput?.transcript?.id;
67
+ if (!transcriptId) {
68
+ throw new Error('transcriptId is required for feedback generation');
69
+ }
70
+ const metrics = input?.metrics ??
71
+ (analyzeOutput
72
+ ? {
73
+ sentimentScore: analyzeOutput.sentimentScore,
74
+ complianceScore: analyzeOutput.complianceScore,
75
+ complianceBreaches: analyzeOutput.complianceBreaches,
76
+ highlights: analyzeOutput.highlights,
77
+ summary: analyzeOutput.summary,
78
+ }
79
+ : undefined);
80
+ if (!metrics) {
81
+ throw new Error('metrics are required for feedback generation');
82
+ }
83
+ return {
84
+ transcriptId,
85
+ metrics,
86
+ };
87
+ }
88
+ }
89
+ export class LogCoachingNoteTask extends Task {
90
+ constructor() {
91
+ super('task-coaching-log-note', 'coaching.log_note');
92
+ }
93
+ policyInput(ctx, input) {
94
+ const resolved = this.resolveInput(ctx, input);
95
+ return {
96
+ action: 'log_coaching_note',
97
+ agentId: resolved.agentId,
98
+ escalationRequired: resolved.escalationRequired,
99
+ };
100
+ }
101
+ verification() {
102
+ return ['output.stored === true', 'typeof output.logId === "string"'];
103
+ }
104
+ async execute(ctx, input) {
105
+ const tool = ctx.getTool('log_coaching_note');
106
+ if (!tool) {
107
+ throw new Error('log_coaching_note tool is not registered');
108
+ }
109
+ const resolved = this.resolveInput(ctx, input);
110
+ const result = (await tool.call(resolved));
111
+ ctx.stream?.emit('task', {
112
+ taskId: this.id,
113
+ stage: 'coaching_note_logged',
114
+ agentId: resolved.agentId,
115
+ escalationNotified: result.escalationNotified,
116
+ });
117
+ return result;
118
+ }
119
+ resolveInput(ctx, input) {
120
+ const analyzeOutput = ctx.outputs?.['task-coaching-analyze-transcript'];
121
+ const feedbackOutput = ctx.outputs?.['task-coaching-generate-feedback'];
122
+ const agentId = input.agentId ?? analyzeOutput?.transcript?.agentId;
123
+ if (!agentId) {
124
+ throw new Error('agentId is required to log coaching note');
125
+ }
126
+ const feedbackSummary = input.feedbackSummary ?? feedbackOutput?.feedbackSummary;
127
+ if (!feedbackSummary) {
128
+ throw new Error('feedbackSummary is required to log coaching note');
129
+ }
130
+ const actionItems = input.actionItems ?? feedbackOutput?.actionItems;
131
+ if (!actionItems) {
132
+ throw new Error('actionItems are required to log coaching note');
133
+ }
134
+ const escalationRequired = input.escalationRequired ?? feedbackOutput?.escalationRequired ?? false;
135
+ return {
136
+ agentId,
137
+ feedbackSummary,
138
+ actionItems,
139
+ escalationRequired,
140
+ };
141
+ }
142
+ }
143
+ //# sourceMappingURL=coaching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coaching.js","sourceRoot":"","sources":["../../../src/tasks/coaching.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Task, type RunContext } from '@ddse/acm-sdk';
2
+ import type { CustomerProfile } from '../data/entitlement.js';
3
+ import { type FetchCustomerProfileInput, type FetchCustomerProfileOutput, type EvaluateEntitlementInput, type EvaluateEntitlementOutput, type NotifySupervisorInput as EntitlementNotifySupervisorInput, type NotifySupervisorOutput as EntitlementNotifySupervisorOutput } from '../tools/entitlement/index.js';
4
+ export declare class RetrieveCustomerProfileTask extends Task<FetchCustomerProfileInput, FetchCustomerProfileOutput> {
5
+ constructor();
6
+ idemKey(_ctx: RunContext, input: FetchCustomerProfileInput): string | undefined;
7
+ policyInput(_ctx: RunContext, input: FetchCustomerProfileInput): Record<string, unknown>;
8
+ verification(): string[];
9
+ execute(ctx: RunContext, input: FetchCustomerProfileInput): Promise<FetchCustomerProfileOutput>;
10
+ }
11
+ export interface EvaluateEntitlementTaskInput extends EvaluateEntitlementInput {
12
+ customer?: CustomerProfile;
13
+ }
14
+ export declare class EvaluateEntitlementTask extends Task<EvaluateEntitlementTaskInput, EvaluateEntitlementOutput> {
15
+ constructor();
16
+ policyInput(_ctx: RunContext, input: EvaluateEntitlementTaskInput): Record<string, unknown>;
17
+ verification(): string[];
18
+ execute(ctx: RunContext, input: EvaluateEntitlementTaskInput): Promise<EvaluateEntitlementOutput>;
19
+ }
20
+ export type SupervisorNotificationTaskInput = EntitlementNotifySupervisorInput & {
21
+ decision: 'allow' | 'deny';
22
+ };
23
+ export declare class SupervisorNotificationTask extends Task<SupervisorNotificationTaskInput, EntitlementNotifySupervisorOutput> {
24
+ constructor();
25
+ policyInput(_ctx: RunContext, input: SupervisorNotificationTaskInput): Record<string, unknown>;
26
+ verification(): string[];
27
+ execute(ctx: RunContext, input: SupervisorNotificationTaskInput): Promise<EntitlementNotifySupervisorOutput>;
28
+ }
29
+ //# sourceMappingURL=entitlement.d.ts.map