@kernel.chat/kbot-finance 0.2.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 +19 -0
- package/README.md +188 -0
- package/RFC-content-addressed-mcp.md +240 -0
- package/dist/adapters/edgar/client.d.ts +11 -0
- package/dist/adapters/edgar/client.d.ts.map +1 -0
- package/dist/adapters/edgar/client.js +56 -0
- package/dist/adapters/edgar/client.js.map +1 -0
- package/dist/adapters/edgar/commands.d.ts +27 -0
- package/dist/adapters/edgar/commands.d.ts.map +1 -0
- package/dist/adapters/edgar/commands.js +56 -0
- package/dist/adapters/edgar/commands.js.map +1 -0
- package/dist/adapters/edgar/index.d.ts +4 -0
- package/dist/adapters/edgar/index.d.ts.map +1 -0
- package/dist/adapters/edgar/index.js +4 -0
- package/dist/adapters/edgar/index.js.map +1 -0
- package/dist/adapters/edgar/types.d.ts +70 -0
- package/dist/adapters/edgar/types.d.ts.map +1 -0
- package/dist/adapters/edgar/types.js +23 -0
- package/dist/adapters/edgar/types.js.map +1 -0
- package/dist/adapters/polymarket/client.d.ts +7 -0
- package/dist/adapters/polymarket/client.d.ts.map +1 -0
- package/dist/adapters/polymarket/client.js +58 -0
- package/dist/adapters/polymarket/client.js.map +1 -0
- package/dist/adapters/polymarket/commands.d.ts +30 -0
- package/dist/adapters/polymarket/commands.d.ts.map +1 -0
- package/dist/adapters/polymarket/commands.js +67 -0
- package/dist/adapters/polymarket/commands.js.map +1 -0
- package/dist/adapters/polymarket/index.d.ts +4 -0
- package/dist/adapters/polymarket/index.d.ts.map +1 -0
- package/dist/adapters/polymarket/index.js +4 -0
- package/dist/adapters/polymarket/index.js.map +1 -0
- package/dist/adapters/polymarket/types.d.ts +58 -0
- package/dist/adapters/polymarket/types.d.ts.map +1 -0
- package/dist/adapters/polymarket/types.js +12 -0
- package/dist/adapters/polymarket/types.js.map +1 -0
- package/dist/audit-log.d.ts +65 -0
- package/dist/audit-log.d.ts.map +1 -0
- package/dist/audit-log.js +96 -0
- package/dist/audit-log.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +44 -0
- package/dist/cli.js.map +1 -0
- package/dist/demo.d.ts +11 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +133 -0
- package/dist/demo.js.map +1 -0
- package/dist/envelope.d.ts +71 -0
- package/dist/envelope.d.ts.map +1 -0
- package/dist/envelope.js +83 -0
- package/dist/envelope.js.map +1 -0
- package/dist/exporters/annex-iv.d.ts +40 -0
- package/dist/exporters/annex-iv.d.ts.map +1 -0
- package/dist/exporters/annex-iv.js +154 -0
- package/dist/exporters/annex-iv.js.map +1 -0
- package/dist/governance.d.ts +55 -0
- package/dist/governance.d.ts.map +1 -0
- package/dist/governance.js +73 -0
- package/dist/governance.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/kbot-tool.d.ts +31 -0
- package/dist/kbot-tool.d.ts.map +1 -0
- package/dist/kbot-tool.js +325 -0
- package/dist/kbot-tool.js.map +1 -0
- package/dist/mcp-server.d.ts +25 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +80 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tools/edgar-query.d.ts +36 -0
- package/dist/tools/edgar-query.d.ts.map +1 -0
- package/dist/tools/edgar-query.js +108 -0
- package/dist/tools/edgar-query.js.map +1 -0
- package/dist/tools/polymarket-query.d.ts +55 -0
- package/dist/tools/polymarket-query.d.ts.map +1 -0
- package/dist/tools/polymarket-query.js +128 -0
- package/dist/tools/polymarket-query.js.map +1 -0
- package/dist/verifier/eu-rts6.d.ts +3 -0
- package/dist/verifier/eu-rts6.d.ts.map +1 -0
- package/dist/verifier/eu-rts6.js +45 -0
- package/dist/verifier/eu-rts6.js.map +1 -0
- package/dist/verifier/index.d.ts +67 -0
- package/dist/verifier/index.d.ts.map +1 -0
- package/dist/verifier/index.js +22 -0
- package/dist/verifier/index.js.map +1 -0
- package/dist/verifier/kelly-cap.d.ts +19 -0
- package/dist/verifier/kelly-cap.d.ts.map +1 -0
- package/dist/verifier/kelly-cap.js +64 -0
- package/dist/verifier/kelly-cap.js.map +1 -0
- package/dist/verifier/model-version.d.ts +3 -0
- package/dist/verifier/model-version.d.ts.map +1 -0
- package/dist/verifier/model-version.js +28 -0
- package/dist/verifier/model-version.js.map +1 -0
- package/dist/verifier/position-limit.d.ts +21 -0
- package/dist/verifier/position-limit.d.ts.map +1 -0
- package/dist/verifier/position-limit.js +42 -0
- package/dist/verifier/position-limit.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEC EDGAR public data API types.
|
|
3
|
+
*
|
|
4
|
+
* EDGAR is the canonical primary source for US public-company filings.
|
|
5
|
+
* Every filing has a stable accession number — content-addressing is
|
|
6
|
+
* essentially built into the substrate. This adapter is read-only.
|
|
7
|
+
*
|
|
8
|
+
* Reference: https://www.sec.gov/edgar/sec-api-documentation
|
|
9
|
+
* User-Agent: SEC requires identifying contact info per fair-use policy.
|
|
10
|
+
*/
|
|
11
|
+
export interface EdgarSubmission {
|
|
12
|
+
readonly accessionNumber?: ReadonlyArray<string>;
|
|
13
|
+
readonly filingDate?: ReadonlyArray<string>;
|
|
14
|
+
readonly reportDate?: ReadonlyArray<string>;
|
|
15
|
+
readonly form?: ReadonlyArray<string>;
|
|
16
|
+
readonly primaryDocument?: ReadonlyArray<string>;
|
|
17
|
+
readonly primaryDocDescription?: ReadonlyArray<string>;
|
|
18
|
+
readonly size?: ReadonlyArray<number>;
|
|
19
|
+
readonly isXBRL?: ReadonlyArray<number>;
|
|
20
|
+
}
|
|
21
|
+
export interface EdgarSubmissionsResponse {
|
|
22
|
+
readonly cik?: string;
|
|
23
|
+
readonly entityType?: string;
|
|
24
|
+
readonly name?: string;
|
|
25
|
+
readonly tickers?: ReadonlyArray<string>;
|
|
26
|
+
readonly exchanges?: ReadonlyArray<string>;
|
|
27
|
+
readonly filings?: {
|
|
28
|
+
readonly recent?: EdgarSubmission;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface EdgarCompanyFact {
|
|
32
|
+
readonly label?: string;
|
|
33
|
+
readonly description?: string;
|
|
34
|
+
readonly units?: Record<string, ReadonlyArray<{
|
|
35
|
+
readonly end?: string;
|
|
36
|
+
readonly val?: number;
|
|
37
|
+
readonly accn?: string;
|
|
38
|
+
readonly fy?: number;
|
|
39
|
+
readonly fp?: string;
|
|
40
|
+
readonly form?: string;
|
|
41
|
+
readonly filed?: string;
|
|
42
|
+
}>>;
|
|
43
|
+
}
|
|
44
|
+
export interface EdgarCompanyFactsResponse {
|
|
45
|
+
readonly cik?: number;
|
|
46
|
+
readonly entityName?: string;
|
|
47
|
+
readonly facts?: {
|
|
48
|
+
readonly "us-gaap"?: Record<string, EdgarCompanyFact>;
|
|
49
|
+
readonly dei?: Record<string, EdgarCompanyFact>;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export type EdgarOutcome<T> = {
|
|
53
|
+
readonly ok: true;
|
|
54
|
+
readonly value: T;
|
|
55
|
+
} | {
|
|
56
|
+
readonly ok: false;
|
|
57
|
+
readonly error: EdgarError;
|
|
58
|
+
};
|
|
59
|
+
export interface EdgarError {
|
|
60
|
+
readonly code: "network" | "http" | "parse" | "not_found" | "rate_limited" | "missing_user_agent";
|
|
61
|
+
readonly message: string;
|
|
62
|
+
readonly status?: number;
|
|
63
|
+
}
|
|
64
|
+
export declare const EDGAR_SUBMISSIONS_BASE = "https://data.sec.gov";
|
|
65
|
+
export declare const EDGAR_ADAPTER_VERSION = "edgar-adapter@0.1.0";
|
|
66
|
+
/** SEC requires a descriptive User-Agent. Set via KBOT_FINANCE_SEC_UA. */
|
|
67
|
+
export declare function getUserAgent(): string;
|
|
68
|
+
/** Pad a CIK to the 10-digit form EDGAR's submissions endpoint requires. */
|
|
69
|
+
export declare function padCik(cik: string | number): string;
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/edgar/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEC EDGAR public data API types.
|
|
3
|
+
*
|
|
4
|
+
* EDGAR is the canonical primary source for US public-company filings.
|
|
5
|
+
* Every filing has a stable accession number — content-addressing is
|
|
6
|
+
* essentially built into the substrate. This adapter is read-only.
|
|
7
|
+
*
|
|
8
|
+
* Reference: https://www.sec.gov/edgar/sec-api-documentation
|
|
9
|
+
* User-Agent: SEC requires identifying contact info per fair-use policy.
|
|
10
|
+
*/
|
|
11
|
+
export const EDGAR_SUBMISSIONS_BASE = "https://data.sec.gov";
|
|
12
|
+
export const EDGAR_ADAPTER_VERSION = "edgar-adapter@0.1.0";
|
|
13
|
+
/** SEC requires a descriptive User-Agent. Set via KBOT_FINANCE_SEC_UA. */
|
|
14
|
+
export function getUserAgent() {
|
|
15
|
+
return (process.env["KBOT_FINANCE_SEC_UA"] ??
|
|
16
|
+
"kbot-finance kernel.chat@gmail.com");
|
|
17
|
+
}
|
|
18
|
+
/** Pad a CIK to the 10-digit form EDGAR's submissions endpoint requires. */
|
|
19
|
+
export function padCik(cik) {
|
|
20
|
+
const s = typeof cik === "number" ? String(cik) : cik.replace(/^CIK0*/i, "");
|
|
21
|
+
return s.padStart(10, "0");
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/edgar/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuDH,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAE3D,0EAA0E;AAC1E,MAAM,UAAU,YAAY;IAC1B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAClC,oCAAoC,CACrC,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,MAAM,CAAC,GAAoB;IACzC,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type PolymarketOutcome } from "./types.js";
|
|
2
|
+
/** Low-level Gamma HTTP client. Returns discriminated unions; never throws. */
|
|
3
|
+
export declare function gammaGet<T>(path: string, params?: Record<string, string | number | boolean | undefined>, options?: {
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
}): Promise<PolymarketOutcome<T>>;
|
|
7
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/adapters/polymarket/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAM,EAClE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAyC/B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { POLYMARKET_GAMMA_BASE, } from "./types.js";
|
|
2
|
+
/** Low-level Gamma HTTP client. Returns discriminated unions; never throws. */
|
|
3
|
+
export async function gammaGet(path, params = {}, options = {}) {
|
|
4
|
+
const base = options.baseUrl ?? POLYMARKET_GAMMA_BASE;
|
|
5
|
+
const url = new URL(path.startsWith("/") ? path.slice(1) : path, base + "/");
|
|
6
|
+
for (const [k, v] of Object.entries(params)) {
|
|
7
|
+
if (v === undefined)
|
|
8
|
+
continue;
|
|
9
|
+
url.searchParams.set(k, String(v));
|
|
10
|
+
}
|
|
11
|
+
const controller = new AbortController();
|
|
12
|
+
const timeout = setTimeout(() => controller.abort(), options.timeoutMs ?? 10_000);
|
|
13
|
+
try {
|
|
14
|
+
const res = await fetch(url, {
|
|
15
|
+
method: "GET",
|
|
16
|
+
headers: { Accept: "application/json", "User-Agent": "kbot-finance/0.1" },
|
|
17
|
+
signal: controller.signal,
|
|
18
|
+
});
|
|
19
|
+
if (res.status === 404) {
|
|
20
|
+
return err({ code: "not_found", message: `404 ${url.pathname}`, status: 404 });
|
|
21
|
+
}
|
|
22
|
+
if (res.status === 429) {
|
|
23
|
+
return err({ code: "rate_limited", message: "429 from Gamma", status: 429 });
|
|
24
|
+
}
|
|
25
|
+
if (!res.ok) {
|
|
26
|
+
const body = await safeText(res);
|
|
27
|
+
return err({ code: "http", message: `HTTP ${res.status}`, status: res.status, body });
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const value = (await res.json());
|
|
31
|
+
return { ok: true, value };
|
|
32
|
+
}
|
|
33
|
+
catch (parseErr) {
|
|
34
|
+
return err({
|
|
35
|
+
code: "parse",
|
|
36
|
+
message: `JSON parse failed: ${parseErr.message}`,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (netErr) {
|
|
41
|
+
return err({ code: "network", message: netErr.message });
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
clearTimeout(timeout);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function err(error) {
|
|
48
|
+
return { ok: false, error };
|
|
49
|
+
}
|
|
50
|
+
async function safeText(res) {
|
|
51
|
+
try {
|
|
52
|
+
return (await res.text()).slice(0, 512);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return "";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/adapters/polymarket/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PolymarketMarket, PolymarketEvent, PolymarketOutcome } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read-only commands against Polymarket's Gamma API.
|
|
4
|
+
*
|
|
5
|
+
* Trading / signing / order placement intentionally not in v0.1 — read
|
|
6
|
+
* first, governed write second. The pattern is the wedge; the volume
|
|
7
|
+
* comes after the audit primitives are proven.
|
|
8
|
+
*/
|
|
9
|
+
export declare function listMarkets(params?: {
|
|
10
|
+
limit?: number;
|
|
11
|
+
active?: boolean;
|
|
12
|
+
closed?: boolean;
|
|
13
|
+
order?: string;
|
|
14
|
+
}): Promise<PolymarketOutcome<ReadonlyArray<PolymarketMarket>>>;
|
|
15
|
+
export declare function getMarket(id: string): Promise<PolymarketOutcome<PolymarketMarket>>;
|
|
16
|
+
export declare function listEvents(params?: {
|
|
17
|
+
limit?: number;
|
|
18
|
+
active?: boolean;
|
|
19
|
+
closed?: boolean;
|
|
20
|
+
}): Promise<PolymarketOutcome<ReadonlyArray<PolymarketEvent>>>;
|
|
21
|
+
/**
|
|
22
|
+
* Decode the `outcomePrices` string Gamma returns as a JSON-encoded array
|
|
23
|
+
* of stringified numbers, e.g. "[\"0.42\", \"0.58\"]".
|
|
24
|
+
*
|
|
25
|
+
* Returns null on any decode failure — the caller decides whether to treat
|
|
26
|
+
* that as fatal. The adapter never throws across the boundary.
|
|
27
|
+
*/
|
|
28
|
+
export declare function decodeOutcomePrices(raw: string | undefined): ReadonlyArray<number> | null;
|
|
29
|
+
export declare function decodeOutcomes(raw: string | undefined): ReadonlyArray<string> | null;
|
|
30
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/adapters/polymarket/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AAEH,wBAAsB,WAAW,CAC/B,MAAM,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAClF,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAO7D;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAE9C;AAED,wBAAsB,UAAU,CAC9B,MAAM,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAM5D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAezF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CASpF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { gammaGet } from "./client.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read-only commands against Polymarket's Gamma API.
|
|
4
|
+
*
|
|
5
|
+
* Trading / signing / order placement intentionally not in v0.1 — read
|
|
6
|
+
* first, governed write second. The pattern is the wedge; the volume
|
|
7
|
+
* comes after the audit primitives are proven.
|
|
8
|
+
*/
|
|
9
|
+
export async function listMarkets(params = {}) {
|
|
10
|
+
return gammaGet("/markets", {
|
|
11
|
+
limit: params.limit ?? 10,
|
|
12
|
+
...(params.active !== undefined ? { active: params.active } : {}),
|
|
13
|
+
...(params.closed !== undefined ? { closed: params.closed } : {}),
|
|
14
|
+
...(params.order !== undefined ? { order: params.order } : {}),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export async function getMarket(id) {
|
|
18
|
+
return gammaGet(`/markets/${encodeURIComponent(id)}`);
|
|
19
|
+
}
|
|
20
|
+
export async function listEvents(params = {}) {
|
|
21
|
+
return gammaGet("/events", {
|
|
22
|
+
limit: params.limit ?? 10,
|
|
23
|
+
...(params.active !== undefined ? { active: params.active } : {}),
|
|
24
|
+
...(params.closed !== undefined ? { closed: params.closed } : {}),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Decode the `outcomePrices` string Gamma returns as a JSON-encoded array
|
|
29
|
+
* of stringified numbers, e.g. "[\"0.42\", \"0.58\"]".
|
|
30
|
+
*
|
|
31
|
+
* Returns null on any decode failure — the caller decides whether to treat
|
|
32
|
+
* that as fatal. The adapter never throws across the boundary.
|
|
33
|
+
*/
|
|
34
|
+
export function decodeOutcomePrices(raw) {
|
|
35
|
+
if (!raw)
|
|
36
|
+
return null;
|
|
37
|
+
try {
|
|
38
|
+
const parsed = JSON.parse(raw);
|
|
39
|
+
if (!Array.isArray(parsed))
|
|
40
|
+
return null;
|
|
41
|
+
const nums = [];
|
|
42
|
+
for (const v of parsed) {
|
|
43
|
+
const n = typeof v === "string" ? Number(v) : typeof v === "number" ? v : NaN;
|
|
44
|
+
if (!Number.isFinite(n))
|
|
45
|
+
return null;
|
|
46
|
+
nums.push(n);
|
|
47
|
+
}
|
|
48
|
+
return nums;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function decodeOutcomes(raw) {
|
|
55
|
+
if (!raw)
|
|
56
|
+
return null;
|
|
57
|
+
try {
|
|
58
|
+
const parsed = JSON.parse(raw);
|
|
59
|
+
if (!Array.isArray(parsed))
|
|
60
|
+
return null;
|
|
61
|
+
return parsed.every((v) => typeof v === "string") ? parsed : null;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/adapters/polymarket/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/polymarket/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/polymarket/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Polymarket Gamma API types.
|
|
3
|
+
*
|
|
4
|
+
* Subset calibrated to the public Gamma endpoints used by the v0.1 adapter.
|
|
5
|
+
* Fields are intentionally optional — Gamma's schema evolves, and we treat
|
|
6
|
+
* unknown fields as opaque to keep the adapter resilient.
|
|
7
|
+
*
|
|
8
|
+
* Reference: https://gamma-api.polymarket.com
|
|
9
|
+
*/
|
|
10
|
+
export interface PolymarketMarket {
|
|
11
|
+
readonly id?: string;
|
|
12
|
+
readonly question?: string;
|
|
13
|
+
readonly slug?: string;
|
|
14
|
+
readonly description?: string;
|
|
15
|
+
readonly active?: boolean;
|
|
16
|
+
readonly closed?: boolean;
|
|
17
|
+
readonly archived?: boolean;
|
|
18
|
+
readonly volumeNum?: number;
|
|
19
|
+
readonly volume24hr?: number;
|
|
20
|
+
readonly liquidityNum?: number;
|
|
21
|
+
readonly outcomes?: string;
|
|
22
|
+
readonly outcomePrices?: string;
|
|
23
|
+
readonly clobTokenIds?: string;
|
|
24
|
+
readonly endDate?: string;
|
|
25
|
+
readonly startDate?: string;
|
|
26
|
+
readonly conditionId?: string;
|
|
27
|
+
readonly lastTradePrice?: number;
|
|
28
|
+
readonly bestBid?: number;
|
|
29
|
+
readonly bestAsk?: number;
|
|
30
|
+
readonly spread?: number;
|
|
31
|
+
readonly umaResolutionStatus?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface PolymarketEvent {
|
|
34
|
+
readonly id?: string;
|
|
35
|
+
readonly slug?: string;
|
|
36
|
+
readonly title?: string;
|
|
37
|
+
readonly description?: string;
|
|
38
|
+
readonly active?: boolean;
|
|
39
|
+
readonly closed?: boolean;
|
|
40
|
+
readonly markets?: ReadonlyArray<PolymarketMarket>;
|
|
41
|
+
}
|
|
42
|
+
/** Adapter outcome — discriminated union. Never throws across the boundary. */
|
|
43
|
+
export type PolymarketOutcome<T> = {
|
|
44
|
+
readonly ok: true;
|
|
45
|
+
readonly value: T;
|
|
46
|
+
} | {
|
|
47
|
+
readonly ok: false;
|
|
48
|
+
readonly error: PolymarketError;
|
|
49
|
+
};
|
|
50
|
+
export interface PolymarketError {
|
|
51
|
+
readonly code: "network" | "http" | "parse" | "not_found" | "rate_limited";
|
|
52
|
+
readonly message: string;
|
|
53
|
+
readonly status?: number;
|
|
54
|
+
readonly body?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare const POLYMARKET_GAMMA_BASE = "https://gamma-api.polymarket.com";
|
|
57
|
+
export declare const POLYMARKET_ADAPTER_VERSION = "polymarket-adapter@0.1.0";
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/polymarket/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;CACpD;AAED,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,qBAAqB,qCAAqC,CAAC;AACxE,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Polymarket Gamma API types.
|
|
3
|
+
*
|
|
4
|
+
* Subset calibrated to the public Gamma endpoints used by the v0.1 adapter.
|
|
5
|
+
* Fields are intentionally optional — Gamma's schema evolves, and we treat
|
|
6
|
+
* unknown fields as opaque to keep the adapter resilient.
|
|
7
|
+
*
|
|
8
|
+
* Reference: https://gamma-api.polymarket.com
|
|
9
|
+
*/
|
|
10
|
+
export const POLYMARKET_GAMMA_BASE = "https://gamma-api.polymarket.com";
|
|
11
|
+
export const POLYMARKET_ADAPTER_VERSION = "polymarket-adapter@0.1.0";
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/polymarket/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgDH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type JsonValue } from "./envelope.js";
|
|
2
|
+
/**
|
|
3
|
+
* Hash-chained append-only audit log.
|
|
4
|
+
*
|
|
5
|
+
* Every entry includes its predecessor's hash. Tampering with any entry
|
|
6
|
+
* invalidates every subsequent entry. This is the legal-defensibility
|
|
7
|
+
* primitive — auditors verify the chain, not individual entries.
|
|
8
|
+
*
|
|
9
|
+
* Storage is JSONL for v0.1 (one entry per line). Production deployment
|
|
10
|
+
* substitutes WORM-compatible storage (S3 Object Lock, immudb, Aeron log).
|
|
11
|
+
* The API stays the same.
|
|
12
|
+
*/
|
|
13
|
+
export type AuditAction = "engine_request" | "engine_response" | "verifier_check" | "approval_granted" | "approval_denied" | "incident" | "replay_request" | "replay_verified" | "replay_mismatch";
|
|
14
|
+
export interface AuditEntryInput {
|
|
15
|
+
readonly action: AuditAction;
|
|
16
|
+
/** Operation or rule name, e.g. "polymarket.get_market" or "rule.position_limit". */
|
|
17
|
+
readonly subject: string;
|
|
18
|
+
/** Session ID for grouping a single conversation/agent run. */
|
|
19
|
+
readonly session_id: string;
|
|
20
|
+
/** Model + prompt versions touched. Empty for non-AI actions. */
|
|
21
|
+
readonly model_lineage?: ReadonlyArray<{
|
|
22
|
+
model: string;
|
|
23
|
+
version: string;
|
|
24
|
+
}>;
|
|
25
|
+
/** Identity of the human approver, if applicable. */
|
|
26
|
+
readonly approver?: string;
|
|
27
|
+
/** Free-form structured payload — must be canonicalize-able JSON. */
|
|
28
|
+
readonly payload: JsonValue;
|
|
29
|
+
}
|
|
30
|
+
export interface AuditEntry extends AuditEntryInput {
|
|
31
|
+
/** Sequence number within this log. Strictly monotonic. */
|
|
32
|
+
readonly seq: number;
|
|
33
|
+
/** ISO 8601 UTC timestamp. */
|
|
34
|
+
readonly timestamp: string;
|
|
35
|
+
/** Hash of the previous entry. "0".repeat(64) for the first entry. */
|
|
36
|
+
readonly prev_hash: string;
|
|
37
|
+
/** Hash of this entry (excluding self_hash). */
|
|
38
|
+
readonly self_hash: string;
|
|
39
|
+
}
|
|
40
|
+
export declare const GENESIS_HASH: string;
|
|
41
|
+
/**
|
|
42
|
+
* AppendOnlyAuditLog — file-backed JSONL store with hash chain.
|
|
43
|
+
*
|
|
44
|
+
* Construction reads the existing tail to pick up the prev_hash and seq.
|
|
45
|
+
* `append()` is serialized within a single instance; multi-process writers
|
|
46
|
+
* need an external lock (out of scope for v0.1).
|
|
47
|
+
*/
|
|
48
|
+
export declare class AppendOnlyAuditLog {
|
|
49
|
+
private readonly path;
|
|
50
|
+
private last_hash;
|
|
51
|
+
private next_seq;
|
|
52
|
+
private write_lock;
|
|
53
|
+
private constructor();
|
|
54
|
+
static open(path: string): Promise<AppendOnlyAuditLog>;
|
|
55
|
+
private resume;
|
|
56
|
+
append(input: AuditEntryInput): Promise<AuditEntry>;
|
|
57
|
+
/** Verify the integrity of the entire log on disk. Returns the failure index, or null if intact. */
|
|
58
|
+
static verify(path: string): Promise<{
|
|
59
|
+
ok: true;
|
|
60
|
+
} | {
|
|
61
|
+
ok: false;
|
|
62
|
+
broken_at_seq: number;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=audit-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../src/audit-log.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,UAAU,GACV,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,QAAiB,CAAC;AAO3C;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAKT,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJzC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAoC;IAEtD,OAAO;WAEM,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAM9C,MAAM;IAgBd,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IA6BzD,oGAAoG;WACvF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAgBhG"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { appendFile, readFile } from "node:fs/promises";
|
|
2
|
+
import { canonicalize, sha256 } from "./envelope.js";
|
|
3
|
+
export const GENESIS_HASH = "0".repeat(64);
|
|
4
|
+
/** Compute the hash of an entry excluding self_hash. */
|
|
5
|
+
function entryHash(entry) {
|
|
6
|
+
return sha256(canonicalize(entry));
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* AppendOnlyAuditLog — file-backed JSONL store with hash chain.
|
|
10
|
+
*
|
|
11
|
+
* Construction reads the existing tail to pick up the prev_hash and seq.
|
|
12
|
+
* `append()` is serialized within a single instance; multi-process writers
|
|
13
|
+
* need an external lock (out of scope for v0.1).
|
|
14
|
+
*/
|
|
15
|
+
export class AppendOnlyAuditLog {
|
|
16
|
+
path;
|
|
17
|
+
last_hash = GENESIS_HASH;
|
|
18
|
+
next_seq = 0;
|
|
19
|
+
write_lock = Promise.resolve();
|
|
20
|
+
constructor(path) {
|
|
21
|
+
this.path = path;
|
|
22
|
+
}
|
|
23
|
+
static async open(path) {
|
|
24
|
+
const log = new AppendOnlyAuditLog(path);
|
|
25
|
+
await log.resume();
|
|
26
|
+
return log;
|
|
27
|
+
}
|
|
28
|
+
async resume() {
|
|
29
|
+
try {
|
|
30
|
+
const raw = await readFile(this.path, "utf8");
|
|
31
|
+
const lines = raw.split("\n").filter((l) => l.length > 0);
|
|
32
|
+
if (lines.length === 0)
|
|
33
|
+
return;
|
|
34
|
+
const tail = lines[lines.length - 1];
|
|
35
|
+
if (tail === undefined)
|
|
36
|
+
return;
|
|
37
|
+
const parsed = JSON.parse(tail);
|
|
38
|
+
this.last_hash = parsed.self_hash;
|
|
39
|
+
this.next_seq = parsed.seq + 1;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err.code !== "ENOENT")
|
|
43
|
+
throw err;
|
|
44
|
+
// File doesn't exist yet — start fresh from genesis.
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async append(input) {
|
|
48
|
+
// Serialize writes through a promise chain so concurrent callers see
|
|
49
|
+
// a coherent hash chain.
|
|
50
|
+
let release = () => { };
|
|
51
|
+
const next = new Promise((resolve) => {
|
|
52
|
+
release = resolve;
|
|
53
|
+
});
|
|
54
|
+
const prev_lock = this.write_lock;
|
|
55
|
+
this.write_lock = next;
|
|
56
|
+
await prev_lock;
|
|
57
|
+
try {
|
|
58
|
+
const skeleton = {
|
|
59
|
+
...input,
|
|
60
|
+
seq: this.next_seq,
|
|
61
|
+
timestamp: new Date().toISOString(),
|
|
62
|
+
prev_hash: this.last_hash,
|
|
63
|
+
};
|
|
64
|
+
const self_hash = entryHash(skeleton);
|
|
65
|
+
const entry = { ...skeleton, self_hash };
|
|
66
|
+
await appendFile(this.path, JSON.stringify(entry) + "\n", "utf8");
|
|
67
|
+
this.last_hash = self_hash;
|
|
68
|
+
this.next_seq += 1;
|
|
69
|
+
return entry;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
release();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Verify the integrity of the entire log on disk. Returns the failure index, or null if intact. */
|
|
76
|
+
static async verify(path) {
|
|
77
|
+
const raw = await readFile(path, "utf8").catch(() => "");
|
|
78
|
+
const lines = raw.split("\n").filter((l) => l.length > 0);
|
|
79
|
+
let expected_prev = GENESIS_HASH;
|
|
80
|
+
let expected_seq = 0;
|
|
81
|
+
for (const line of lines) {
|
|
82
|
+
const entry = JSON.parse(line);
|
|
83
|
+
if (entry.seq !== expected_seq)
|
|
84
|
+
return { ok: false, broken_at_seq: expected_seq };
|
|
85
|
+
if (entry.prev_hash !== expected_prev)
|
|
86
|
+
return { ok: false, broken_at_seq: entry.seq };
|
|
87
|
+
const { self_hash, ...skeleton } = entry;
|
|
88
|
+
if (entryHash(skeleton) !== self_hash)
|
|
89
|
+
return { ok: false, broken_at_seq: entry.seq };
|
|
90
|
+
expected_prev = self_hash;
|
|
91
|
+
expected_seq += 1;
|
|
92
|
+
}
|
|
93
|
+
return { ok: true };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=audit-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../src/audit-log.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Bin entrypoint for @kernel.chat/kbot-finance.
|
|
4
|
+
*
|
|
5
|
+
* npx @kernel.chat/kbot-finance mcp → start the MCP server on stdio
|
|
6
|
+
* npx @kernel.chat/kbot-finance demo → run the end-to-end demo
|
|
7
|
+
*
|
|
8
|
+
* Default (no args) prints usage.
|
|
9
|
+
*/
|
|
10
|
+
import { startMcpServer } from "./mcp-server.js";
|
|
11
|
+
async function main() {
|
|
12
|
+
const cmd = process.argv[2];
|
|
13
|
+
switch (cmd) {
|
|
14
|
+
case "mcp": {
|
|
15
|
+
await startMcpServer();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
case "demo": {
|
|
19
|
+
// Dynamic import so demo's top-level side effects don't run at module load.
|
|
20
|
+
await import("./demo.js");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
default: {
|
|
24
|
+
process.stdout.write(`@kernel.chat/kbot-finance — audit-grade AI infrastructure\n\n` +
|
|
25
|
+
`Usage:\n` +
|
|
26
|
+
` kbot-finance mcp Start the MCP server on stdio\n` +
|
|
27
|
+
` kbot-finance demo Run the end-to-end demo against live Polymarket\n\n` +
|
|
28
|
+
`MCP client config snippet:\n` +
|
|
29
|
+
` {\n` +
|
|
30
|
+
` "mcpServers": {\n` +
|
|
31
|
+
` "kbot-finance": {\n` +
|
|
32
|
+
` "command": "npx",\n` +
|
|
33
|
+
` "args": ["-y", "@kernel.chat/kbot-finance", "mcp"]\n` +
|
|
34
|
+
` }\n` +
|
|
35
|
+
` }\n` +
|
|
36
|
+
` }\n`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
main().catch((e) => {
|
|
41
|
+
process.stderr.write(`fatal: ${e.message}\n`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,4EAA4E;YAC5E,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+DAA+D;gBAC7D,UAAU;gBACV,uDAAuD;gBACvD,2EAA2E;gBAC3E,8BAA8B;gBAC9B,OAAO;gBACP,uBAAuB;gBACvB,2BAA2B;gBAC3B,6BAA6B;gBAC7B,8DAA8D;gBAC9D,WAAW;gBACX,SAAS;gBACT,OAAO,CACV,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAW,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/demo.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* End-to-end demo of the kbot-finance architecture.
|
|
3
|
+
*
|
|
4
|
+
* Run with: npm run demo
|
|
5
|
+
*
|
|
6
|
+
* Hits the live Polymarket Gamma API. No keys required. The Replit
|
|
7
|
+
* entrypoint runs this on first launch so visitors see the full
|
|
8
|
+
* envelope + verifier + audit-log flow light up.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|