@decibelsystems/tools 2.2.0-beta.0 → 3.0.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/CHANGELOG.md +160 -0
- package/dist/agentPresence.d.ts +80 -0
- package/dist/agentPresence.d.ts.map +1 -1
- package/dist/agentPresence.js +177 -0
- package/dist/agentPresence.js.map +1 -1
- package/dist/agentic/index.d.ts +18 -8
- package/dist/agentic/index.d.ts.map +1 -1
- package/dist/agentic/index.js +18 -144
- package/dist/agentic/index.js.map +1 -1
- package/dist/agentic/types.d.ts +106 -0
- package/dist/agentic/types.d.ts.map +1 -1
- package/dist/agentic/types.js +77 -1
- package/dist/agentic/types.js.map +1 -1
- package/dist/architectAdrs.d.ts +14 -2
- package/dist/architectAdrs.d.ts.map +1 -1
- package/dist/architectAdrs.js +9 -3
- package/dist/architectAdrs.js.map +1 -1
- package/dist/client/transports.d.ts.map +1 -1
- package/dist/client/transports.js +13 -3
- package/dist/client/transports.js.map +1 -1
- package/dist/daemon.d.ts +19 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +181 -38
- package/dist/daemon.js.map +1 -1
- package/dist/daemonConfig.d.ts +24 -0
- package/dist/daemonConfig.d.ts.map +1 -1
- package/dist/daemonConfig.js +46 -12
- package/dist/daemonConfig.js.map +1 -1
- package/dist/decibelPaths.d.ts.map +1 -1
- package/dist/decibelPaths.js +39 -6
- package/dist/decibelPaths.js.map +1 -1
- package/dist/domain/issue.d.ts +77 -0
- package/dist/domain/issue.d.ts.map +1 -0
- package/dist/domain/issue.js +134 -0
- package/dist/domain/issue.js.map +1 -0
- package/dist/domain/issueCodec.d.ts +39 -0
- package/dist/domain/issueCodec.d.ts.map +1 -0
- package/dist/domain/issueCodec.js +298 -0
- package/dist/domain/issueCodec.js.map +1 -0
- package/dist/domain/issueRepository.d.ts +91 -0
- package/dist/domain/issueRepository.d.ts.map +1 -0
- package/dist/domain/issueRepository.js +257 -0
- package/dist/domain/issueRepository.js.map +1 -0
- package/dist/facades/definitions.d.ts +0 -1
- package/dist/facades/definitions.d.ts.map +1 -1
- package/dist/facades/definitions.js +94 -113
- package/dist/facades/definitions.js.map +1 -1
- package/dist/facades/index.d.ts +2 -1
- package/dist/facades/index.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/facades/index.js.map +1 -1
- package/dist/facades/types.d.ts +17 -0
- package/dist/facades/types.d.ts.map +1 -1
- package/dist/httpArgs.d.ts +11 -0
- package/dist/httpArgs.d.ts.map +1 -0
- package/dist/httpArgs.js +39 -0
- package/dist/httpArgs.js.map +1 -0
- package/dist/httpServer.d.ts +1 -12
- package/dist/httpServer.d.ts.map +1 -1
- package/dist/httpServer.js +97 -96
- package/dist/httpServer.js.map +1 -1
- package/dist/kernel.d.ts +46 -1
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +311 -26
- package/dist/kernel.js.map +1 -1
- package/dist/lib/agent-services/assumptions.d.ts.map +1 -1
- package/dist/lib/agent-services/assumptions.js +8 -2
- package/dist/lib/agent-services/assumptions.js.map +1 -1
- package/dist/lib/atomicWrite.d.ts +26 -0
- package/dist/lib/atomicWrite.d.ts.map +1 -0
- package/dist/lib/atomicWrite.js +73 -0
- package/dist/lib/atomicWrite.js.map +1 -0
- package/dist/lib/envelope.d.ts +31 -0
- package/dist/lib/envelope.d.ts.map +1 -0
- package/dist/lib/envelope.js +80 -0
- package/dist/lib/envelope.js.map +1 -0
- package/dist/lib/fileLock.d.ts +38 -0
- package/dist/lib/fileLock.d.ts.map +1 -0
- package/dist/lib/fileLock.js +124 -0
- package/dist/lib/fileLock.js.map +1 -0
- package/dist/lib/recordIdAllocator.d.ts +86 -0
- package/dist/lib/recordIdAllocator.d.ts.map +1 -0
- package/dist/lib/recordIdAllocator.js +161 -0
- package/dist/lib/recordIdAllocator.js.map +1 -0
- package/dist/projectRegistry.d.ts.map +1 -1
- package/dist/projectRegistry.js +11 -0
- package/dist/projectRegistry.js.map +1 -1
- package/dist/runtime/circuitBreaker.d.ts +95 -0
- package/dist/runtime/circuitBreaker.d.ts.map +1 -0
- package/dist/runtime/circuitBreaker.js +178 -0
- package/dist/runtime/circuitBreaker.js.map +1 -0
- package/dist/runtime/ensureRuntime.d.ts +103 -0
- package/dist/runtime/ensureRuntime.d.ts.map +1 -0
- package/dist/runtime/ensureRuntime.js +281 -0
- package/dist/runtime/ensureRuntime.js.map +1 -0
- package/dist/runtime/extensions.d.ts +57 -0
- package/dist/runtime/extensions.d.ts.map +1 -0
- package/dist/runtime/extensions.js +216 -0
- package/dist/runtime/extensions.js.map +1 -0
- package/dist/runtime/localHttp.d.ts +24 -0
- package/dist/runtime/localHttp.d.ts.map +1 -0
- package/dist/runtime/localHttp.js +84 -0
- package/dist/runtime/localHttp.js.map +1 -0
- package/dist/runtime/projectResolution.d.ts +29 -0
- package/dist/runtime/projectResolution.d.ts.map +1 -0
- package/dist/runtime/projectResolution.js +67 -0
- package/dist/runtime/projectResolution.js.map +1 -0
- package/dist/runtime/protocol.d.ts +62 -0
- package/dist/runtime/protocol.d.ts.map +1 -0
- package/dist/runtime/protocol.js +74 -0
- package/dist/runtime/protocol.js.map +1 -0
- package/dist/sentinelIssues.d.ts +26 -2
- package/dist/sentinelIssues.d.ts.map +1 -1
- package/dist/sentinelIssues.js +125 -64
- package/dist/sentinelIssues.js.map +1 -1
- package/dist/server.js +59 -12
- package/dist/server.js.map +1 -1
- package/dist/tools/agentic/index.d.ts.map +1 -1
- package/dist/tools/agentic/index.js +28 -2
- package/dist/tools/agentic/index.js.map +1 -1
- package/dist/tools/architect/index.d.ts.map +1 -1
- package/dist/tools/architect/index.js +7 -2
- package/dist/tools/architect/index.js.map +1 -1
- package/dist/tools/context.d.ts +10 -5
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +45 -18
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/coordinator/coordinator.d.ts.map +1 -1
- package/dist/tools/coordinator/coordinator.js +48 -19
- package/dist/tools/coordinator/coordinator.js.map +1 -1
- package/dist/tools/crit.d.ts +2 -1
- package/dist/tools/crit.d.ts.map +1 -1
- package/dist/tools/crit.js +19 -4
- package/dist/tools/crit.js.map +1 -1
- package/dist/tools/designer/index.d.ts.map +1 -1
- package/dist/tools/designer/index.js +4 -3
- package/dist/tools/designer/index.js.map +1 -1
- package/dist/tools/designer/lateral-tools.d.ts.map +1 -1
- package/dist/tools/designer/lateral-tools.js +4 -2
- package/dist/tools/designer/lateral-tools.js.map +1 -1
- package/dist/tools/designer.d.ts +2 -1
- package/dist/tools/designer.d.ts.map +1 -1
- package/dist/tools/designer.js +24 -12
- package/dist/tools/designer.js.map +1 -1
- package/dist/tools/dojo.d.ts +3 -2
- package/dist/tools/dojo.d.ts.map +1 -1
- package/dist/tools/dojo.js +64 -22
- package/dist/tools/dojo.js.map +1 -1
- package/dist/tools/friction.d.ts.map +1 -1
- package/dist/tools/friction.js +16 -6
- package/dist/tools/friction.js.map +1 -1
- package/dist/tools/guardian.d.ts.map +1 -1
- package/dist/tools/guardian.js +6 -2
- package/dist/tools/guardian.js.map +1 -1
- package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -1
- package/dist/tools/hygiene/oracle-hygiene.js +8 -2
- package/dist/tools/hygiene/oracle-hygiene.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +27 -18
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/learnings.d.ts +2 -1
- package/dist/tools/learnings.d.ts.map +1 -1
- package/dist/tools/learnings.js +31 -15
- package/dist/tools/learnings.js.map +1 -1
- package/dist/tools/oracle.d.ts.map +1 -1
- package/dist/tools/oracle.js +19 -6
- package/dist/tools/oracle.js.map +1 -1
- package/dist/tools/policy.d.ts +2 -1
- package/dist/tools/policy.d.ts.map +1 -1
- package/dist/tools/policy.js +28 -9
- package/dist/tools/policy.js.map +1 -1
- package/dist/tools/postoffice/index.d.ts +10 -0
- package/dist/tools/postoffice/index.d.ts.map +1 -0
- package/dist/tools/postoffice/index.js +218 -0
- package/dist/tools/postoffice/index.js.map +1 -0
- package/dist/tools/postoffice.d.ts +78 -0
- package/dist/tools/postoffice.d.ts.map +1 -0
- package/dist/tools/postoffice.js +199 -0
- package/dist/tools/postoffice.js.map +1 -0
- package/dist/tools/provenance.d.ts +7 -0
- package/dist/tools/provenance.d.ts.map +1 -1
- package/dist/tools/provenance.js +42 -16
- package/dist/tools/provenance.js.map +1 -1
- package/dist/tools/sentinel/index.d.ts +1 -0
- package/dist/tools/sentinel/index.d.ts.map +1 -1
- package/dist/tools/sentinel/index.js +88 -4
- package/dist/tools/sentinel/index.js.map +1 -1
- package/dist/tools/sentinel.d.ts +102 -1
- package/dist/tools/sentinel.d.ts.map +1 -1
- package/dist/tools/sentinel.js +544 -328
- package/dist/tools/sentinel.js.map +1 -1
- package/dist/tools/shared/index.d.ts +2 -1
- package/dist/tools/shared/index.d.ts.map +1 -1
- package/dist/tools/shared/index.js +2 -1
- package/dist/tools/shared/index.js.map +1 -1
- package/dist/tools/shared/response.d.ts +24 -0
- package/dist/tools/shared/response.d.ts.map +1 -1
- package/dist/tools/shared/response.js +61 -7
- package/dist/tools/shared/response.js.map +1 -1
- package/dist/tools/shared/storeRead.d.ts +153 -0
- package/dist/tools/shared/storeRead.d.ts.map +1 -0
- package/dist/tools/shared/storeRead.js +242 -0
- package/dist/tools/shared/storeRead.js.map +1 -0
- package/dist/tools/testSpec.d.ts +3 -2
- package/dist/tools/testSpec.d.ts.map +1 -1
- package/dist/tools/testSpec.js +51 -14
- package/dist/tools/testSpec.js.map +1 -1
- package/dist/tools/vector.d.ts +33 -1
- package/dist/tools/vector.d.ts.map +1 -1
- package/dist/tools/vector.js +31 -5
- package/dist/tools/vector.js.map +1 -1
- package/dist/tools/zoom/index.d.ts +15 -0
- package/dist/tools/zoom/index.d.ts.map +1 -0
- package/dist/tools/zoom/index.js +174 -0
- package/dist/tools/zoom/index.js.map +1 -0
- package/dist/tools/zoom.d.ts +234 -0
- package/dist/tools/zoom.d.ts.map +1 -0
- package/dist/tools/zoom.js +627 -0
- package/dist/tools/zoom.js.map +1 -0
- package/dist/transports/bridge.d.ts +1 -1
- package/dist/transports/bridge.d.ts.map +1 -1
- package/dist/transports/bridge.js +2 -0
- package/dist/transports/bridge.js.map +1 -1
- package/dist/transports/http.d.ts +1 -1
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +3 -1
- package/dist/transports/http.js.map +1 -1
- package/dist/transports/index.d.ts +1 -0
- package/dist/transports/index.d.ts.map +1 -1
- package/dist/transports/index.js +1 -0
- package/dist/transports/index.js.map +1 -1
- package/dist/transports/mcp.d.ts +1 -1
- package/dist/transports/mcp.d.ts.map +1 -1
- package/dist/transports/mcp.js +7 -3
- package/dist/transports/mcp.js.map +1 -1
- package/dist/transports/stdio.d.ts +1 -1
- package/dist/transports/stdio.d.ts.map +1 -1
- package/dist/transports/stdio.js +2 -0
- package/dist/transports/stdio.js.map +1 -1
- package/dist/transports/thinStdio.d.ts +22 -0
- package/dist/transports/thinStdio.d.ts.map +1 -0
- package/dist/transports/thinStdio.js +218 -0
- package/dist/transports/thinStdio.js.map +1 -0
- package/dist/transports/types.d.ts +8 -1
- package/dist/transports/types.d.ts.map +1 -1
- package/dist/types/agent-services.d.ts +7 -0
- package/dist/types/agent-services.d.ts.map +1 -1
- package/package.json +9 -4
- package/templates/com.decibel.daemon.plist +6 -1
- package/dist/tools/deck.d.ts +0 -11
- package/dist/tools/deck.d.ts.map +0 -1
- package/dist/tools/deck.js +0 -1656
- package/dist/tools/deck.js.map +0 -1
- package/dist/tools/mother.d.ts +0 -11
- package/dist/tools/mother.d.ts.map +0 -1
- package/dist/tools/mother.js +0 -503
- package/dist/tools/mother.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -3
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -189
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/senken.d.ts +0 -11
- package/dist/tools/senken.d.ts.map +0 -1
- package/dist/tools/senken.js +0 -482
- package/dist/tools/senken.js.map +0 -1
- package/dist/tools/terminal.d.ts +0 -17
- package/dist/tools/terminal.d.ts.map +0 -1
- package/dist/tools/terminal.js +0 -968
- package/dist/tools/terminal.js.map +0 -1
- package/dist/tools/toolsIndex.d.ts +0 -5
- package/dist/tools/toolsIndex.d.ts.map +0 -1
- package/dist/tools/toolsIndex.js +0 -37
- package/dist/tools/toolsIndex.js.map +0 -1
package/dist/tools/senken.js
DELETED
|
@@ -1,482 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Senken Trade Tools — trade database integration
|
|
3
|
-
*
|
|
4
|
-
* Tools for querying trade performance, giveback analysis, trade review,
|
|
5
|
-
* and parameter override management.
|
|
6
|
-
*
|
|
7
|
-
* Env var: SENKEN_DATABASE_URL
|
|
8
|
-
*/
|
|
9
|
-
import pg from 'pg';
|
|
10
|
-
const { Pool } = pg;
|
|
11
|
-
// Lazy-init pool
|
|
12
|
-
let pool = null;
|
|
13
|
-
function getPool() {
|
|
14
|
-
if (!pool) {
|
|
15
|
-
const connectionString = process.env.SENKEN_DATABASE_URL;
|
|
16
|
-
if (!connectionString) {
|
|
17
|
-
throw new Error('SENKEN_DATABASE_URL environment variable not set');
|
|
18
|
-
}
|
|
19
|
-
pool = new Pool({
|
|
20
|
-
connectionString,
|
|
21
|
-
ssl: { rejectUnauthorized: false },
|
|
22
|
-
max: 5,
|
|
23
|
-
idleTimeoutMillis: 30000,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return pool;
|
|
27
|
-
}
|
|
28
|
-
// =============================================================================
|
|
29
|
-
// Helper
|
|
30
|
-
// =============================================================================
|
|
31
|
-
function jsonResult(data, isError = false) {
|
|
32
|
-
return {
|
|
33
|
-
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
34
|
-
isError,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
// =============================================================================
|
|
38
|
-
// Tool 1: senken_trade_summary
|
|
39
|
-
// =============================================================================
|
|
40
|
-
const senkenTradeSummary = {
|
|
41
|
-
definition: {
|
|
42
|
-
name: 'senken_trade_summary',
|
|
43
|
-
description: 'Aggregate trade performance. Returns count, win rate, avg R-multiple, total PnL grouped by strategy.',
|
|
44
|
-
annotations: {
|
|
45
|
-
title: 'Trade Summary',
|
|
46
|
-
readOnlyHint: true,
|
|
47
|
-
destructiveHint: false,
|
|
48
|
-
openWorldHint: false,
|
|
49
|
-
},
|
|
50
|
-
inputSchema: {
|
|
51
|
-
type: 'object',
|
|
52
|
-
properties: {
|
|
53
|
-
days: {
|
|
54
|
-
type: 'number',
|
|
55
|
-
description: 'Look-back window in days (default: 30)',
|
|
56
|
-
},
|
|
57
|
-
strategy: {
|
|
58
|
-
type: 'string',
|
|
59
|
-
description: 'Filter by strategy name',
|
|
60
|
-
},
|
|
61
|
-
symbol: {
|
|
62
|
-
type: 'string',
|
|
63
|
-
description: 'Filter by symbol',
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
required: [],
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
handler: async (args) => {
|
|
70
|
-
try {
|
|
71
|
-
const db = getPool();
|
|
72
|
-
const days = args.days ?? 30;
|
|
73
|
-
const query = `
|
|
74
|
-
SELECT
|
|
75
|
-
strategy,
|
|
76
|
-
COUNT(*)::int AS trade_count,
|
|
77
|
-
ROUND((COUNT(*) FILTER (WHERE r_multiple > 0)::numeric
|
|
78
|
-
/ NULLIF(COUNT(*), 0) * 100), 1) AS win_rate_pct,
|
|
79
|
-
ROUND(AVG(r_multiple)::numeric, 2) AS avg_r,
|
|
80
|
-
ROUND(SUM(pnl)::numeric, 2) AS total_pnl
|
|
81
|
-
FROM mother_trades
|
|
82
|
-
WHERE closed_at >= NOW() - ($1 || ' days')::interval
|
|
83
|
-
AND ($2::text IS NULL OR strategy = $2)
|
|
84
|
-
AND ($3::text IS NULL OR symbol = $3)
|
|
85
|
-
GROUP BY strategy
|
|
86
|
-
ORDER BY total_pnl DESC
|
|
87
|
-
`;
|
|
88
|
-
const result = await db.query(query, [
|
|
89
|
-
days,
|
|
90
|
-
args.strategy || null,
|
|
91
|
-
args.symbol || null,
|
|
92
|
-
]);
|
|
93
|
-
return jsonResult({
|
|
94
|
-
success: true,
|
|
95
|
-
days,
|
|
96
|
-
strategies: result.rows,
|
|
97
|
-
total_trades: result.rows.reduce((s, r) => s + r.trade_count, 0),
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
102
|
-
return jsonResult({ success: false, error: msg }, true);
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
// =============================================================================
|
|
107
|
-
// Tool 2: senken_giveback_report (WISH-0001)
|
|
108
|
-
// =============================================================================
|
|
109
|
-
const senkenGivebackReport = {
|
|
110
|
-
definition: {
|
|
111
|
-
name: 'senken_giveback_report',
|
|
112
|
-
description: 'Analyse giveback — how much MFE (max favourable excursion) was captured vs. left on the table. Groups by strategy, symbol, and exit reason.',
|
|
113
|
-
annotations: {
|
|
114
|
-
title: 'Giveback Report',
|
|
115
|
-
readOnlyHint: true,
|
|
116
|
-
destructiveHint: false,
|
|
117
|
-
openWorldHint: false,
|
|
118
|
-
},
|
|
119
|
-
inputSchema: {
|
|
120
|
-
type: 'object',
|
|
121
|
-
properties: {
|
|
122
|
-
days: {
|
|
123
|
-
type: 'number',
|
|
124
|
-
description: 'Look-back window in days (default: 30)',
|
|
125
|
-
},
|
|
126
|
-
strategy: {
|
|
127
|
-
type: 'string',
|
|
128
|
-
description: 'Filter by strategy name',
|
|
129
|
-
},
|
|
130
|
-
limit: {
|
|
131
|
-
type: 'number',
|
|
132
|
-
description: 'Max rows per section (default: 20)',
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
required: [],
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
handler: async (args) => {
|
|
139
|
-
try {
|
|
140
|
-
const db = getPool();
|
|
141
|
-
const days = args.days ?? 30;
|
|
142
|
-
const limit = args.limit ?? 20;
|
|
143
|
-
// Strategy-level giveback breakdown
|
|
144
|
-
const strategyQuery = `
|
|
145
|
-
SELECT
|
|
146
|
-
t.strategy,
|
|
147
|
-
COUNT(*)::int AS trades,
|
|
148
|
-
ROUND(AVG(s.max_favorable_excursion)::numeric, 2) AS avg_mfe,
|
|
149
|
-
ROUND(AVG(t.r_multiple)::numeric, 2) AS avg_realized_r,
|
|
150
|
-
ROUND(AVG(s.max_favorable_excursion - t.r_multiple)::numeric, 2) AS avg_giveback_r,
|
|
151
|
-
ROUND((AVG((s.max_favorable_excursion - t.r_multiple)
|
|
152
|
-
/ NULLIF(s.max_favorable_excursion, 0)) * 100)::numeric, 1) AS avg_giveback_pct
|
|
153
|
-
FROM mother_trades t
|
|
154
|
-
JOIN signal_outcomes s ON s.trade_id = t.id
|
|
155
|
-
WHERE t.closed_at >= NOW() - ($1 || ' days')::interval
|
|
156
|
-
AND ($2::text IS NULL OR t.strategy = $2)
|
|
157
|
-
GROUP BY t.strategy
|
|
158
|
-
ORDER BY avg_giveback_pct DESC
|
|
159
|
-
LIMIT $3
|
|
160
|
-
`;
|
|
161
|
-
// Worst individual givebacks
|
|
162
|
-
const worstQuery = `
|
|
163
|
-
SELECT
|
|
164
|
-
t.id, t.strategy, t.symbol, t.direction,
|
|
165
|
-
ROUND(t.r_multiple::numeric, 2) AS realized_r,
|
|
166
|
-
ROUND(s.max_favorable_excursion::numeric, 2) AS mfe,
|
|
167
|
-
ROUND((s.max_favorable_excursion - t.r_multiple)::numeric, 2) AS giveback_r,
|
|
168
|
-
t.exit_reason, t.closed_at
|
|
169
|
-
FROM mother_trades t
|
|
170
|
-
JOIN signal_outcomes s ON s.trade_id = t.id
|
|
171
|
-
WHERE t.closed_at >= NOW() - ($1 || ' days')::interval
|
|
172
|
-
AND ($2::text IS NULL OR t.strategy = $2)
|
|
173
|
-
AND s.max_favorable_excursion > 0
|
|
174
|
-
ORDER BY (s.max_favorable_excursion - t.r_multiple) DESC
|
|
175
|
-
LIMIT $3
|
|
176
|
-
`;
|
|
177
|
-
// Exit reason distribution
|
|
178
|
-
const exitQuery = `
|
|
179
|
-
SELECT
|
|
180
|
-
t.exit_reason,
|
|
181
|
-
COUNT(*)::int AS trades,
|
|
182
|
-
ROUND(AVG(s.max_favorable_excursion - t.r_multiple)::numeric, 2) AS avg_giveback_r
|
|
183
|
-
FROM mother_trades t
|
|
184
|
-
JOIN signal_outcomes s ON s.trade_id = t.id
|
|
185
|
-
WHERE t.closed_at >= NOW() - ($1 || ' days')::interval
|
|
186
|
-
AND ($2::text IS NULL OR t.strategy = $2)
|
|
187
|
-
GROUP BY t.exit_reason
|
|
188
|
-
ORDER BY avg_giveback_r DESC
|
|
189
|
-
`;
|
|
190
|
-
const [strategyResult, worstResult, exitResult] = await Promise.all([
|
|
191
|
-
db.query(strategyQuery, [days, args.strategy || null, limit]),
|
|
192
|
-
db.query(worstQuery, [days, args.strategy || null, limit]),
|
|
193
|
-
db.query(exitQuery, [days, args.strategy || null]),
|
|
194
|
-
]);
|
|
195
|
-
return jsonResult({
|
|
196
|
-
success: true,
|
|
197
|
-
days,
|
|
198
|
-
by_strategy: strategyResult.rows,
|
|
199
|
-
worst_givebacks: worstResult.rows,
|
|
200
|
-
by_exit_reason: exitResult.rows,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
catch (error) {
|
|
204
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
205
|
-
return jsonResult({ success: false, error: msg }, true);
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
};
|
|
209
|
-
// =============================================================================
|
|
210
|
-
// Tool 3: senken_trade_review (WISH-0004)
|
|
211
|
-
// =============================================================================
|
|
212
|
-
const senkenTradeReview = {
|
|
213
|
-
definition: {
|
|
214
|
-
name: 'senken_trade_review',
|
|
215
|
-
description: 'Review individual trades with counterfactual analysis. Grades A–F based on MFE capture percentage and suggests lessons.',
|
|
216
|
-
annotations: {
|
|
217
|
-
title: 'Trade Review',
|
|
218
|
-
readOnlyHint: true,
|
|
219
|
-
destructiveHint: false,
|
|
220
|
-
openWorldHint: false,
|
|
221
|
-
},
|
|
222
|
-
inputSchema: {
|
|
223
|
-
type: 'object',
|
|
224
|
-
properties: {
|
|
225
|
-
trade_id: {
|
|
226
|
-
type: 'string',
|
|
227
|
-
description: 'Specific trade ID to review',
|
|
228
|
-
},
|
|
229
|
-
last: {
|
|
230
|
-
type: 'number',
|
|
231
|
-
description: 'Review the last N trades (default: 5)',
|
|
232
|
-
},
|
|
233
|
-
},
|
|
234
|
-
required: [],
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
handler: async (args) => {
|
|
238
|
-
try {
|
|
239
|
-
const db = getPool();
|
|
240
|
-
let query;
|
|
241
|
-
let params;
|
|
242
|
-
if (args.trade_id) {
|
|
243
|
-
query = `
|
|
244
|
-
SELECT
|
|
245
|
-
t.*, s.max_favorable_excursion AS mfe,
|
|
246
|
-
s.max_adverse_excursion AS mae,
|
|
247
|
-
s.time_to_mfe_minutes,
|
|
248
|
-
s.metadata AS signal_metadata
|
|
249
|
-
FROM mother_trades t
|
|
250
|
-
LEFT JOIN signal_outcomes s ON s.trade_id = t.id
|
|
251
|
-
WHERE t.id = $1
|
|
252
|
-
`;
|
|
253
|
-
params = [args.trade_id];
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
const last = args.last ?? 5;
|
|
257
|
-
query = `
|
|
258
|
-
SELECT
|
|
259
|
-
t.*, s.max_favorable_excursion AS mfe,
|
|
260
|
-
s.max_adverse_excursion AS mae,
|
|
261
|
-
s.time_to_mfe_minutes,
|
|
262
|
-
s.metadata AS signal_metadata
|
|
263
|
-
FROM mother_trades t
|
|
264
|
-
LEFT JOIN signal_outcomes s ON s.trade_id = t.id
|
|
265
|
-
ORDER BY t.closed_at DESC
|
|
266
|
-
LIMIT $1
|
|
267
|
-
`;
|
|
268
|
-
params = [last];
|
|
269
|
-
}
|
|
270
|
-
const result = await db.query(query, params);
|
|
271
|
-
const reviews = result.rows.map((row) => {
|
|
272
|
-
const mfe = row.mfe ?? 0;
|
|
273
|
-
const realized = row.r_multiple ?? 0;
|
|
274
|
-
const capturePct = mfe > 0 ? (realized / mfe) * 100 : realized > 0 ? 100 : 0;
|
|
275
|
-
// Grade based on capture percentage
|
|
276
|
-
let grade;
|
|
277
|
-
if (capturePct >= 80)
|
|
278
|
-
grade = 'A';
|
|
279
|
-
else if (capturePct >= 60)
|
|
280
|
-
grade = 'B';
|
|
281
|
-
else if (capturePct >= 40)
|
|
282
|
-
grade = 'C';
|
|
283
|
-
else if (capturePct >= 20)
|
|
284
|
-
grade = 'D';
|
|
285
|
-
else
|
|
286
|
-
grade = 'F';
|
|
287
|
-
// Counterfactual exits at different thresholds
|
|
288
|
-
const thresholds = [0.25, 0.5, 0.75, 1.0];
|
|
289
|
-
const counterfactuals = thresholds
|
|
290
|
-
.filter((t) => mfe >= t)
|
|
291
|
-
.map((t) => ({
|
|
292
|
-
exit_at_r: t,
|
|
293
|
-
would_have_captured: mfe >= t,
|
|
294
|
-
r_vs_actual: Math.round((t - realized) * 100) / 100,
|
|
295
|
-
}));
|
|
296
|
-
// Lesson suggestion
|
|
297
|
-
let lesson;
|
|
298
|
-
if (capturePct < 20 && mfe > 1) {
|
|
299
|
-
lesson = 'Large MFE with minimal capture — consider tighter trailing stop';
|
|
300
|
-
}
|
|
301
|
-
else if (capturePct < 40) {
|
|
302
|
-
lesson = 'Below-average capture — review exit timing relative to MFE';
|
|
303
|
-
}
|
|
304
|
-
else if (realized < 0 && mfe > 0.5) {
|
|
305
|
-
lesson = 'Winning trade turned loser — add break-even stop after MFE threshold';
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
lesson = 'Acceptable execution';
|
|
309
|
-
}
|
|
310
|
-
return {
|
|
311
|
-
id: row.id,
|
|
312
|
-
strategy: row.strategy,
|
|
313
|
-
symbol: row.symbol,
|
|
314
|
-
direction: row.direction,
|
|
315
|
-
entry_price: row.entry_price,
|
|
316
|
-
exit_price: row.exit_price,
|
|
317
|
-
r_multiple: Math.round((realized) * 100) / 100,
|
|
318
|
-
pnl: row.pnl,
|
|
319
|
-
exit_reason: row.exit_reason,
|
|
320
|
-
mfe: Math.round(mfe * 100) / 100,
|
|
321
|
-
mae: Math.round((row.mae ?? 0) * 100) / 100,
|
|
322
|
-
capture_pct: Math.round(capturePct * 10) / 10,
|
|
323
|
-
grade,
|
|
324
|
-
counterfactuals,
|
|
325
|
-
lesson,
|
|
326
|
-
closed_at: row.closed_at,
|
|
327
|
-
};
|
|
328
|
-
});
|
|
329
|
-
return jsonResult({
|
|
330
|
-
success: true,
|
|
331
|
-
reviews,
|
|
332
|
-
count: reviews.length,
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
catch (error) {
|
|
336
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
337
|
-
return jsonResult({ success: false, error: msg }, true);
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
};
|
|
341
|
-
// =============================================================================
|
|
342
|
-
// Tool 4: senken_list_overrides (WISH-0003, read side)
|
|
343
|
-
// =============================================================================
|
|
344
|
-
const senkenListOverrides = {
|
|
345
|
-
definition: {
|
|
346
|
-
name: 'senken_list_overrides',
|
|
347
|
-
description: 'List active parameter overrides for trading strategies. Shows current value, previous value, who applied, and when.',
|
|
348
|
-
annotations: {
|
|
349
|
-
title: 'List Overrides',
|
|
350
|
-
readOnlyHint: true,
|
|
351
|
-
destructiveHint: false,
|
|
352
|
-
openWorldHint: false,
|
|
353
|
-
},
|
|
354
|
-
inputSchema: {
|
|
355
|
-
type: 'object',
|
|
356
|
-
properties: {
|
|
357
|
-
strategy: {
|
|
358
|
-
type: 'string',
|
|
359
|
-
description: 'Filter by strategy name',
|
|
360
|
-
},
|
|
361
|
-
},
|
|
362
|
-
required: [],
|
|
363
|
-
},
|
|
364
|
-
},
|
|
365
|
-
handler: async (args) => {
|
|
366
|
-
try {
|
|
367
|
-
const db = getPool();
|
|
368
|
-
const query = `
|
|
369
|
-
SELECT
|
|
370
|
-
id, strategy, parameter, value, previous_value,
|
|
371
|
-
reason, applied_by, applied_at
|
|
372
|
-
FROM mother_overrides
|
|
373
|
-
WHERE rolled_back_at IS NULL
|
|
374
|
-
AND ($1::text IS NULL OR strategy = $1)
|
|
375
|
-
ORDER BY applied_at DESC
|
|
376
|
-
`;
|
|
377
|
-
const result = await db.query(query, [args.strategy || null]);
|
|
378
|
-
return jsonResult({
|
|
379
|
-
success: true,
|
|
380
|
-
overrides: result.rows,
|
|
381
|
-
count: result.rows.length,
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
catch (error) {
|
|
385
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
386
|
-
return jsonResult({ success: false, error: msg }, true);
|
|
387
|
-
}
|
|
388
|
-
},
|
|
389
|
-
};
|
|
390
|
-
// =============================================================================
|
|
391
|
-
// Tool 5: senken_apply_override (WISH-0003, write side)
|
|
392
|
-
// =============================================================================
|
|
393
|
-
const senkenApplyOverride = {
|
|
394
|
-
definition: {
|
|
395
|
-
name: 'senken_apply_override',
|
|
396
|
-
description: 'Apply a parameter override to a trading strategy. Records the change with changelog (previous value, timestamp, reason). This action is routed through the approval gate.',
|
|
397
|
-
annotations: {
|
|
398
|
-
title: 'Apply Override',
|
|
399
|
-
readOnlyHint: false,
|
|
400
|
-
destructiveHint: false,
|
|
401
|
-
openWorldHint: false,
|
|
402
|
-
},
|
|
403
|
-
inputSchema: {
|
|
404
|
-
type: 'object',
|
|
405
|
-
properties: {
|
|
406
|
-
strategy: {
|
|
407
|
-
type: 'string',
|
|
408
|
-
description: 'Strategy name to override',
|
|
409
|
-
},
|
|
410
|
-
parameter: {
|
|
411
|
-
type: 'string',
|
|
412
|
-
description: 'Parameter name to override',
|
|
413
|
-
},
|
|
414
|
-
value: {
|
|
415
|
-
type: 'string',
|
|
416
|
-
description: 'New parameter value',
|
|
417
|
-
},
|
|
418
|
-
reason: {
|
|
419
|
-
type: 'string',
|
|
420
|
-
description: 'Reason for the override',
|
|
421
|
-
},
|
|
422
|
-
},
|
|
423
|
-
required: ['strategy', 'parameter', 'value', 'reason'],
|
|
424
|
-
},
|
|
425
|
-
},
|
|
426
|
-
handler: async (args) => {
|
|
427
|
-
try {
|
|
428
|
-
const db = getPool();
|
|
429
|
-
// Get current value if one exists
|
|
430
|
-
const currentQuery = `
|
|
431
|
-
SELECT value FROM mother_overrides
|
|
432
|
-
WHERE strategy = $1 AND parameter = $2 AND rolled_back_at IS NULL
|
|
433
|
-
LIMIT 1
|
|
434
|
-
`;
|
|
435
|
-
const currentResult = await db.query(currentQuery, [
|
|
436
|
-
args.strategy,
|
|
437
|
-
args.parameter,
|
|
438
|
-
]);
|
|
439
|
-
const previousValue = currentResult.rows[0]?.value ?? null;
|
|
440
|
-
// Roll back existing override for this strategy+parameter
|
|
441
|
-
if (previousValue !== null) {
|
|
442
|
-
await db.query(`UPDATE mother_overrides
|
|
443
|
-
SET rolled_back_at = NOW()
|
|
444
|
-
WHERE strategy = $1 AND parameter = $2 AND rolled_back_at IS NULL`, [args.strategy, args.parameter]);
|
|
445
|
-
}
|
|
446
|
-
// Insert new override
|
|
447
|
-
const insertQuery = `
|
|
448
|
-
INSERT INTO mother_overrides
|
|
449
|
-
(strategy, parameter, value, previous_value, reason, applied_by)
|
|
450
|
-
VALUES ($1, $2, $3, $4, $5, 'agent')
|
|
451
|
-
RETURNING id, strategy, parameter, value, previous_value, reason, applied_by, applied_at
|
|
452
|
-
`;
|
|
453
|
-
const result = await db.query(insertQuery, [
|
|
454
|
-
args.strategy,
|
|
455
|
-
args.parameter,
|
|
456
|
-
args.value,
|
|
457
|
-
previousValue,
|
|
458
|
-
args.reason,
|
|
459
|
-
]);
|
|
460
|
-
return jsonResult({
|
|
461
|
-
success: true,
|
|
462
|
-
override: result.rows[0],
|
|
463
|
-
replaced_previous: previousValue !== null,
|
|
464
|
-
});
|
|
465
|
-
}
|
|
466
|
-
catch (error) {
|
|
467
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
468
|
-
return jsonResult({ success: false, error: msg }, true);
|
|
469
|
-
}
|
|
470
|
-
},
|
|
471
|
-
};
|
|
472
|
-
// =============================================================================
|
|
473
|
-
// Export
|
|
474
|
-
// =============================================================================
|
|
475
|
-
export const senkenTools = [
|
|
476
|
-
senkenTradeSummary,
|
|
477
|
-
senkenGivebackReport,
|
|
478
|
-
senkenTradeReview,
|
|
479
|
-
senkenListOverrides,
|
|
480
|
-
senkenApplyOverride,
|
|
481
|
-
];
|
|
482
|
-
//# sourceMappingURL=senken.js.map
|
package/dist/tools/senken.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"senken.js","sourceRoot":"","sources":["../../src/tools/senken.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/terminal.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal Markets Tools — DX Terminal Pro vault management
|
|
3
|
-
*
|
|
4
|
-
* REST API reads (market data, portfolios, strategies, competitors)
|
|
5
|
-
* and on-chain writes (strategy updates, settings, deposits/withdrawals)
|
|
6
|
-
* for the 21-day AI agent tournament on Base.
|
|
7
|
-
*
|
|
8
|
-
* Env vars:
|
|
9
|
-
* DX_WALLET_ACCOUNT — cast keystore account name (preferred, e.g. "dx-tournament")
|
|
10
|
-
* DX_WALLET_PASSWORD_FILE — path to keystore password file (required with DX_WALLET_ACCOUNT)
|
|
11
|
-
* DX_WALLET_PRIVATE_KEY — raw private key fallback (less secure, use keystore instead)
|
|
12
|
-
* DX_TERMINAL_VAULT — vault contract address (auto-resolved from wallet if missing)
|
|
13
|
-
* DX_TERMINAL_RPC — Base RPC URL (default: https://mainnet.base.org)
|
|
14
|
-
*/
|
|
15
|
-
import type { ToolSpec } from './types.js';
|
|
16
|
-
export declare const terminalTools: ToolSpec[];
|
|
17
|
-
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/tools/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,YAAY,CAAC;AA2gCvD,eAAO,MAAM,aAAa,EAAE,QAAQ,EAmBnC,CAAC"}
|