@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.
- package/LICENSE +21 -0
- package/README.md +113 -0
- package/bin/acm-demo.ts +495 -0
- package/data/coaching/agents.json +16 -0
- package/data/coaching/transcripts.json +37 -0
- package/data/documents.json +72 -0
- package/data/entitlement/customers.json +38 -0
- package/data/entitlement/policies.json +38 -0
- package/data/incidents/incidents.json +30 -0
- package/data/incidents/routing_rules.json +36 -0
- package/data/invoices/invoices.json +38 -0
- package/data/invoices/purchase-orders.json +38 -0
- package/data/issues.json +99 -0
- package/data/knowledge/docs/kb-001.md +7 -0
- package/data/knowledge/docs/kb-002.md +7 -0
- package/data/knowledge/docs/kb-003.md +9 -0
- package/data/knowledge/index.json +25 -0
- package/data/orders.json +106 -0
- package/dist/bin/acm-demo.d.ts +3 -0
- package/dist/bin/acm-demo.d.ts.map +1 -0
- package/dist/bin/acm-demo.js +392 -0
- package/dist/bin/acm-demo.js.map +1 -0
- package/dist/src/context/directives.d.ts +3 -0
- package/dist/src/context/directives.d.ts.map +1 -0
- package/dist/src/context/directives.js +325 -0
- package/dist/src/context/directives.js.map +1 -0
- package/dist/src/context/index.d.ts +2 -0
- package/dist/src/context/index.d.ts.map +1 -0
- package/dist/src/context/index.js +2 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/data/coaching.d.ts +19 -0
- package/dist/src/data/coaching.d.ts.map +1 -0
- package/dist/src/data/coaching.js +22 -0
- package/dist/src/data/coaching.js.map +1 -0
- package/dist/src/data/entitlement.d.ts +25 -0
- package/dist/src/data/entitlement.d.ts.map +1 -0
- package/dist/src/data/entitlement.js +26 -0
- package/dist/src/data/entitlement.js.map +1 -0
- package/dist/src/data/incidents.d.ts +23 -0
- package/dist/src/data/incidents.d.ts.map +1 -0
- package/dist/src/data/incidents.js +37 -0
- package/dist/src/data/incidents.js.map +1 -0
- package/dist/src/data/invoices.d.ts +34 -0
- package/dist/src/data/invoices.d.ts.map +1 -0
- package/dist/src/data/invoices.js +49 -0
- package/dist/src/data/invoices.js.map +1 -0
- package/dist/src/data/knowledge.d.ts +11 -0
- package/dist/src/data/knowledge.d.ts.map +1 -0
- package/dist/src/data/knowledge.js +57 -0
- package/dist/src/data/knowledge.js.map +1 -0
- package/dist/src/data/loader.d.ts +4 -0
- package/dist/src/data/loader.d.ts.map +1 -0
- package/dist/src/data/loader.js +69 -0
- package/dist/src/data/loader.js.map +1 -0
- package/dist/src/examples/scenarios.d.ts +23 -0
- package/dist/src/examples/scenarios.d.ts.map +1 -0
- package/dist/src/examples/scenarios.js +609 -0
- package/dist/src/examples/scenarios.js.map +1 -0
- package/dist/src/goals/index.d.ts +8 -0
- package/dist/src/goals/index.d.ts.map +1 -0
- package/dist/src/goals/index.js +12 -0
- package/dist/src/goals/index.js.map +1 -0
- package/dist/src/policy.d.ts +5 -0
- package/dist/src/policy.d.ts.map +1 -0
- package/dist/src/policy.js +24 -0
- package/dist/src/policy.js.map +1 -0
- package/dist/src/registries.d.ts +18 -0
- package/dist/src/registries.d.ts.map +1 -0
- package/dist/src/registries.js +38 -0
- package/dist/src/registries.js.map +1 -0
- package/dist/src/renderer.d.ts +9 -0
- package/dist/src/renderer.d.ts.map +1 -0
- package/dist/src/renderer.js +76 -0
- package/dist/src/renderer.js.map +1 -0
- package/dist/src/search/bm25.d.ts +68 -0
- package/dist/src/search/bm25.d.ts.map +1 -0
- package/dist/src/search/bm25.js +131 -0
- package/dist/src/search/bm25.js.map +1 -0
- package/dist/src/search/index.d.ts +2 -0
- package/dist/src/search/index.d.ts.map +1 -0
- package/dist/src/search/index.js +3 -0
- package/dist/src/search/index.js.map +1 -0
- package/dist/src/tasks/coaching.d.ts +30 -0
- package/dist/src/tasks/coaching.d.ts.map +1 -0
- package/dist/src/tasks/coaching.js +143 -0
- package/dist/src/tasks/coaching.js.map +1 -0
- package/dist/src/tasks/entitlement.d.ts +29 -0
- package/dist/src/tasks/entitlement.d.ts.map +1 -0
- package/dist/src/tasks/entitlement.js +135 -0
- package/dist/src/tasks/entitlement.js.map +1 -0
- package/dist/src/tasks/incidents.d.ts +42 -0
- package/dist/src/tasks/incidents.d.ts.map +1 -0
- package/dist/src/tasks/incidents.js +189 -0
- package/dist/src/tasks/incidents.js.map +1 -0
- package/dist/src/tasks/index.d.ts +7 -0
- package/dist/src/tasks/index.d.ts.map +1 -0
- package/dist/src/tasks/index.js +7 -0
- package/dist/src/tasks/index.js.map +1 -0
- package/dist/src/tasks/invoices.d.ts +40 -0
- package/dist/src/tasks/invoices.d.ts.map +1 -0
- package/dist/src/tasks/invoices.js +180 -0
- package/dist/src/tasks/invoices.js.map +1 -0
- package/dist/src/tasks/knowledge.d.ts +23 -0
- package/dist/src/tasks/knowledge.d.ts.map +1 -0
- package/dist/src/tasks/knowledge.js +115 -0
- package/dist/src/tasks/knowledge.js.map +1 -0
- package/dist/src/tasks/legacy.d.ts +50 -0
- package/dist/src/tasks/legacy.d.ts.map +1 -0
- package/dist/src/tasks/legacy.js +85 -0
- package/dist/src/tasks/legacy.js.map +1 -0
- package/dist/src/tools/coaching/index.d.ts +49 -0
- package/dist/src/tools/coaching/index.d.ts.map +1 -0
- package/dist/src/tools/coaching/index.js +119 -0
- package/dist/src/tools/coaching/index.js.map +1 -0
- package/dist/src/tools/entitlement/index.d.ts +52 -0
- package/dist/src/tools/entitlement/index.d.ts.map +1 -0
- package/dist/src/tools/entitlement/index.js +120 -0
- package/dist/src/tools/entitlement/index.js.map +1 -0
- package/dist/src/tools/incidents/index.d.ts +55 -0
- package/dist/src/tools/incidents/index.d.ts.map +1 -0
- package/dist/src/tools/incidents/index.js +109 -0
- package/dist/src/tools/incidents/index.js.map +1 -0
- package/dist/src/tools/index.d.ts +90 -0
- package/dist/src/tools/index.d.ts.map +1 -0
- package/dist/src/tools/index.js +109 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/invoices/index.d.ts +56 -0
- package/dist/src/tools/invoices/index.d.ts.map +1 -0
- package/dist/src/tools/invoices/index.js +85 -0
- package/dist/src/tools/invoices/index.js.map +1 -0
- package/dist/src/tools/knowledge/index.d.ts +52 -0
- package/dist/src/tools/knowledge/index.d.ts.map +1 -0
- package/dist/src/tools/knowledge/index.js +120 -0
- package/dist/src/tools/knowledge/index.js.map +1 -0
- package/dist/tests/bm25.test.d.ts +2 -0
- package/dist/tests/bm25.test.d.ts.map +1 -0
- package/dist/tests/bm25.test.js +98 -0
- package/dist/tests/bm25.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +2 -0
- package/dist/tests/integration.test.d.ts.map +1 -0
- package/dist/tests/integration.test.js +126 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/plan-hydration.test.d.ts +2 -0
- package/dist/tests/plan-hydration.test.d.ts.map +1 -0
- package/dist/tests/plan-hydration.test.js +28 -0
- package/dist/tests/plan-hydration.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/docs/examples-architecture.md +144 -0
- package/docs/successrun.md +1022 -0
- package/package.json +33 -0
- package/src/context/directives.ts +366 -0
- package/src/context/index.ts +1 -0
- package/src/data/coaching.ts +50 -0
- package/src/data/entitlement.ts +60 -0
- package/src/data/incidents.ts +78 -0
- package/src/data/invoices.ts +103 -0
- package/src/data/knowledge.ts +77 -0
- package/src/data/loader.ts +80 -0
- package/src/examples/scenarios.ts +724 -0
- package/src/goals/index.ts +18 -0
- package/src/policy.ts +30 -0
- package/src/registries.ts +48 -0
- package/src/renderer.ts +82 -0
- package/src/search/bm25.ts +173 -0
- package/src/search/index.ts +2 -0
- package/src/tasks/coaching.ts +217 -0
- package/src/tasks/entitlement.ts +197 -0
- package/src/tasks/incidents.ts +277 -0
- package/src/tasks/index.ts +6 -0
- package/src/tasks/invoices.ts +269 -0
- package/src/tasks/knowledge.ts +169 -0
- package/src/tasks/legacy.ts +112 -0
- package/src/tools/coaching/index.ts +197 -0
- package/src/tools/entitlement/index.ts +199 -0
- package/src/tools/incidents/index.ts +185 -0
- package/src/tools/index.ts +192 -0
- package/src/tools/invoices/index.ts +165 -0
- package/src/tools/knowledge/index.ts +203 -0
- package/tests/bm25.test.ts +129 -0
- package/tests/integration.test.ts +163 -0
- package/tests/plan-hydration.test.ts +33 -0
- 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 @@
|
|
|
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 @@
|
|
|
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
|