tenbrains 2.1.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/AGENTS.md +112 -0
- package/README.md +218 -0
- package/dist/ai/analyzer.d.ts +28 -0
- package/dist/ai/analyzer.d.ts.map +1 -0
- package/dist/ai/analyzer.js +35 -0
- package/dist/ai/analyzer.js.map +1 -0
- package/dist/ai/client.d.ts +12 -0
- package/dist/ai/client.d.ts.map +1 -0
- package/dist/ai/client.js +152 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/json.d.ts +7 -0
- package/dist/ai/json.d.ts.map +1 -0
- package/dist/ai/json.js +57 -0
- package/dist/ai/json.js.map +1 -0
- package/dist/ai/mock.d.ts +6 -0
- package/dist/ai/mock.d.ts.map +1 -0
- package/dist/ai/mock.js +66 -0
- package/dist/ai/mock.js.map +1 -0
- package/dist/ai/prompts.d.ts +19 -0
- package/dist/ai/prompts.d.ts.map +1 -0
- package/dist/ai/prompts.js +40 -0
- package/dist/ai/prompts.js.map +1 -0
- package/dist/ai/providers.d.ts +22 -0
- package/dist/ai/providers.d.ts.map +1 -0
- package/dist/ai/providers.js +56 -0
- package/dist/ai/providers.js.map +1 -0
- package/dist/ai/resolve.d.ts +24 -0
- package/dist/ai/resolve.d.ts.map +1 -0
- package/dist/ai/resolve.js +33 -0
- package/dist/ai/resolve.js.map +1 -0
- package/dist/bin/preflight.d.ts +2 -0
- package/dist/bin/preflight.d.ts.map +1 -0
- package/dist/bin/preflight.js +11 -0
- package/dist/bin/preflight.js.map +1 -0
- package/dist/bin/tenbrains.d.ts +3 -0
- package/dist/bin/tenbrains.d.ts.map +1 -0
- package/dist/bin/tenbrains.js +9 -0
- package/dist/bin/tenbrains.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +554 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze.d.ts +7 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +204 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/bookmark.d.ts +9 -0
- package/dist/commands/bookmark.d.ts.map +1 -0
- package/dist/commands/bookmark.js +120 -0
- package/dist/commands/bookmark.js.map +1 -0
- package/dist/commands/config.d.ts +15 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +142 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/db.d.ts +9 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +64 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/digest.d.ts +19 -0
- package/dist/commands/digest.d.ts.map +1 -0
- package/dist/commands/digest.js +71 -0
- package/dist/commands/digest.js.map +1 -0
- package/dist/commands/import.d.ts +11 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +78 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/learn.d.ts +9 -0
- package/dist/commands/learn.d.ts.map +1 -0
- package/dist/commands/learn.js +149 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/manifest.d.ts +13 -0
- package/dist/commands/manifest.d.ts.map +1 -0
- package/dist/commands/manifest.js +62 -0
- package/dist/commands/manifest.js.map +1 -0
- package/dist/commands/record.d.ts +10 -0
- package/dist/commands/record.d.ts.map +1 -0
- package/dist/commands/record.js +37 -0
- package/dist/commands/record.js.map +1 -0
- package/dist/commands/search.d.ts +5 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +33 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/shared.d.ts +9 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +13 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/suggest.d.ts +9 -0
- package/dist/commands/suggest.d.ts.map +1 -0
- package/dist/commands/suggest.js +102 -0
- package/dist/commands/suggest.js.map +1 -0
- package/dist/commands/takeaway.d.ts +9 -0
- package/dist/commands/takeaway.d.ts.map +1 -0
- package/dist/commands/takeaway.js +167 -0
- package/dist/commands/takeaway.js.map +1 -0
- package/dist/core/config.d.ts +52 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +180 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +28 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +40 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/errors.d.ts +33 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +82 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/input.d.ts +9 -0
- package/dist/core/input.d.ts.map +1 -0
- package/dist/core/input.js +47 -0
- package/dist/core/input.js.map +1 -0
- package/dist/core/opts.d.ts +8 -0
- package/dist/core/opts.d.ts.map +1 -0
- package/dist/core/opts.js +38 -0
- package/dist/core/opts.js.map +1 -0
- package/dist/core/output.d.ts +58 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +76 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/paths.d.ts +20 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +31 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/text.d.ts +10 -0
- package/dist/core/text.d.ts.map +1 -0
- package/dist/core/text.js +132 -0
- package/dist/core/text.js.map +1 -0
- package/dist/core/validate.d.ts +5 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +17 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/db/database.d.ts +27 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +90 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/fts.d.ts +12 -0
- package/dist/db/fts.d.ts.map +1 -0
- package/dist/db/fts.js +42 -0
- package/dist/db/fts.js.map +1 -0
- package/dist/db/migrations.d.ts +20 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +243 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/repositories.d.ts +130 -0
- package/dist/db/repositories.d.ts.map +1 -0
- package/dist/db/repositories.js +418 -0
- package/dist/db/repositories.js.map +1 -0
- package/dist/domain/learn.d.ts +25 -0
- package/dist/domain/learn.d.ts.map +1 -0
- package/dist/domain/learn.js +85 -0
- package/dist/domain/learn.js.map +1 -0
- package/dist/domain/schemas.d.ts +169 -0
- package/dist/domain/schemas.d.ts.map +1 -0
- package/dist/domain/schemas.js +54 -0
- package/dist/domain/schemas.js.map +1 -0
- package/dist/domain/search.d.ts +32 -0
- package/dist/domain/search.d.ts.map +1 -0
- package/dist/domain/search.js +77 -0
- package/dist/domain/search.js.map +1 -0
- package/dist/domain/suggest.d.ts +17 -0
- package/dist/domain/suggest.d.ts.map +1 -0
- package/dist/domain/suggest.js +114 -0
- package/dist/domain/suggest.js.map +1 -0
- package/dist/domain/tags.d.ts +9 -0
- package/dist/domain/tags.d.ts.map +1 -0
- package/dist/domain/tags.js +40 -0
- package/dist/domain/tags.js.map +1 -0
- package/dist/domain/types.d.ts +84 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +2 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/x/archive.d.ts +32 -0
- package/dist/x/archive.d.ts.map +1 -0
- package/dist/x/archive.js +108 -0
- package/dist/x/archive.js.map +1 -0
- package/dist/x/client.d.ts +61 -0
- package/dist/x/client.d.ts.map +1 -0
- package/dist/x/client.js +321 -0
- package/dist/x/client.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AnalysisResult, TakeawayResult } from "../domain/schemas.js";
|
|
2
|
+
export declare function mockAnalysis(text: string): AnalysisResult;
|
|
3
|
+
export declare function mockTakeaway(posts: Array<{
|
|
4
|
+
text: string;
|
|
5
|
+
}>): TakeawayResult;
|
|
6
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/ai/mock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAsC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAsBzD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,cAAc,CAgB3E"}
|
package/dist/ai/mock.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { significantTerms } from "../core/text.js";
|
|
2
|
+
/**
|
|
3
|
+
* Deterministic, offline analysis used by the `mock` provider. It performs no
|
|
4
|
+
* network calls and never fabricates a real model's judgement — output is a
|
|
5
|
+
* transparent, reproducible summary of the input text, suitable for tests, CI,
|
|
6
|
+
* and offline development. Every record it produces is flagged `mock: true`.
|
|
7
|
+
*/
|
|
8
|
+
function titleCase(word) {
|
|
9
|
+
const clean = word.replace(/^#/, "");
|
|
10
|
+
return clean.charAt(0).toUpperCase() + clean.slice(1);
|
|
11
|
+
}
|
|
12
|
+
function firstSentence(text) {
|
|
13
|
+
const trimmed = text.trim();
|
|
14
|
+
const match = trimmed.match(/^.*?[.!?](\s|$)/);
|
|
15
|
+
const sentence = (match ? match[0] : trimmed).trim();
|
|
16
|
+
return sentence.length > 240 ? `${sentence.slice(0, 237)}...` : sentence;
|
|
17
|
+
}
|
|
18
|
+
function detectIntent(text) {
|
|
19
|
+
const lower = text.toLowerCase();
|
|
20
|
+
if (/\bhttps?:\/\//.test(text) ||
|
|
21
|
+
/\b(launch|introducing|announc|release|available now)\b/.test(lower)) {
|
|
22
|
+
return "Announce or promote something to the audience";
|
|
23
|
+
}
|
|
24
|
+
if (text.includes("?") || /^\s*(how|why|what|when|should)\b/.test(lower)) {
|
|
25
|
+
return "Pose a question or prompt discussion";
|
|
26
|
+
}
|
|
27
|
+
if (/^\s*(how to|here'?s how|step|tip|lesson)\b/.test(lower)) {
|
|
28
|
+
return "Teach or explain a concept";
|
|
29
|
+
}
|
|
30
|
+
return "Share an observation or insight";
|
|
31
|
+
}
|
|
32
|
+
export function mockAnalysis(text) {
|
|
33
|
+
const terms = significantTerms(text, 5);
|
|
34
|
+
const topic = terms.length > 0 ? terms.slice(0, 2).map(titleCase).join(" & ") : "General commentary";
|
|
35
|
+
const summary = firstSentence(text) || `A short post about ${topic.toLowerCase()}.`;
|
|
36
|
+
const intent = detectIntent(text);
|
|
37
|
+
const novelConcepts = Array.from({ length: 5 }, (_, i) => {
|
|
38
|
+
const term = terms[i];
|
|
39
|
+
if (term) {
|
|
40
|
+
return {
|
|
41
|
+
name: titleCase(term),
|
|
42
|
+
whyItMattersInTweet: `"${titleCase(term)}" is a recurring focus of the post and anchors its ${topic.toLowerCase()} theme.`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
name: `Supporting idea ${i + 1}`,
|
|
47
|
+
whyItMattersInTweet: `An additional point that reinforces the post's framing of ${topic.toLowerCase()}.`,
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
return { topic, summary, intent, novelConcepts };
|
|
51
|
+
}
|
|
52
|
+
export function mockTakeaway(posts) {
|
|
53
|
+
const combined = posts.map((p) => p.text).join("\n");
|
|
54
|
+
const terms = significantTerms(combined, 6);
|
|
55
|
+
const focus = terms.slice(0, 3).map(titleCase).join(", ") || "varied topics";
|
|
56
|
+
const summary = `Across ${posts.length} recent post${posts.length === 1 ? "" : "s"}, the account consistently engages with ${focus}.`;
|
|
57
|
+
const takeaways = [];
|
|
58
|
+
for (let i = 0; i < Math.min(5, Math.max(3, terms.length)); i += 1) {
|
|
59
|
+
const term = terms[i];
|
|
60
|
+
takeaways.push(term
|
|
61
|
+
? `Recurring focus on ${titleCase(term)}.`
|
|
62
|
+
: `Maintains a consistent voice across the ${posts.length} sampled posts.`);
|
|
63
|
+
}
|
|
64
|
+
return { summary, takeaways };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/ai/mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD;;;;;GAKG;AAEH,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IACE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,wDAAwD,CAAC,IAAI,CAAC,KAAK,CAAC,EACpE,CAAC;QACD,OAAO,+CAA+C,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,sCAAsC,CAAC;IAChD,CAAC;IACD,IAAI,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,OAAO,iCAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GACT,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACzF,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,sBAAsB,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IACpF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,EAAE,CAAC;YACT,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;gBACrB,mBAAmB,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,sDAAsD,KAAK,CAAC,WAAW,EAAE,SAAS;aAC3H,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE;YAChC,mBAAmB,EAAE,6DAA6D,KAAK,CAAC,WAAW,EAAE,GAAG;SACzG,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA8B;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;IAC7E,MAAM,OAAO,GAAG,UAAU,KAAK,CAAC,MAAM,eAAe,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,2CAA2C,KAAK,GAAG,CAAC;IAEtI,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,SAAS,CAAC,IAAI,CACZ,IAAI;YACF,CAAC,CAAC,sBAAsB,SAAS,CAAC,IAAI,CAAC,GAAG;YAC1C,CAAC,CAAC,2CAA2C,KAAK,CAAC,MAAM,iBAAiB,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function tweetAnalysisSystemPrompt(): string;
|
|
2
|
+
export declare function tweetAnalysisUserPrompt(post: {
|
|
3
|
+
text: string;
|
|
4
|
+
authorUsername?: string | undefined;
|
|
5
|
+
authorName?: string | undefined;
|
|
6
|
+
url?: string | undefined;
|
|
7
|
+
}): string;
|
|
8
|
+
export declare function accountTakeawaySystemPrompt(): string;
|
|
9
|
+
export declare function accountTakeawayUserPrompt(input: {
|
|
10
|
+
account: {
|
|
11
|
+
username: string;
|
|
12
|
+
name?: string | undefined;
|
|
13
|
+
};
|
|
14
|
+
posts: Array<{
|
|
15
|
+
text: string;
|
|
16
|
+
postedAt?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
}): string;
|
|
19
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAWA,wBAAgB,yBAAyB,IAAI,MAAM,CAUlD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,GAAG,MAAM,CAET;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAUpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACzD,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;CAC/D,GAAG,MAAM,CAST"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
function compactPost(post) {
|
|
2
|
+
return {
|
|
3
|
+
text: post.text,
|
|
4
|
+
authorUsername: post.authorUsername ?? null,
|
|
5
|
+
authorName: post.authorName ?? null,
|
|
6
|
+
url: post.url ?? null,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function tweetAnalysisSystemPrompt() {
|
|
10
|
+
return [
|
|
11
|
+
"You are analyzing a post on X.",
|
|
12
|
+
"Return only a valid JSON object with exactly these keys: topic, summary, intent, novelConcepts.",
|
|
13
|
+
"novelConcepts must be an array with exactly 5 objects.",
|
|
14
|
+
"Each concept object must have keys: name and whyItMattersInTweet.",
|
|
15
|
+
"topic, summary, intent, name, and whyItMattersInTweet must be non-empty strings.",
|
|
16
|
+
"Do not include markdown fences, comments, or extra keys.",
|
|
17
|
+
"Keep it factual and avoid speculation when evidence is missing.",
|
|
18
|
+
].join(" ");
|
|
19
|
+
}
|
|
20
|
+
export function tweetAnalysisUserPrompt(post) {
|
|
21
|
+
return JSON.stringify({ post: compactPost(post) }, null, 2);
|
|
22
|
+
}
|
|
23
|
+
export function accountTakeawaySystemPrompt() {
|
|
24
|
+
return [
|
|
25
|
+
"You are analyzing a followed X account based on its recent posts.",
|
|
26
|
+
"Return only a valid JSON object with exactly these keys: summary, takeaways.",
|
|
27
|
+
"summary must be a non-empty string.",
|
|
28
|
+
"takeaways must be an array with 3 to 5 non-empty strings.",
|
|
29
|
+
"Keep the language concise, factual, and grounded in the provided posts.",
|
|
30
|
+
"Do not speculate beyond the evidence in the posts.",
|
|
31
|
+
"Do not include markdown fences, comments, or extra keys.",
|
|
32
|
+
].join(" ");
|
|
33
|
+
}
|
|
34
|
+
export function accountTakeawayUserPrompt(input) {
|
|
35
|
+
return JSON.stringify({
|
|
36
|
+
account: { username: input.account.username, name: input.account.name ?? null },
|
|
37
|
+
posts: input.posts.map((p) => ({ text: p.text, postedAt: p.postedAt ?? null })),
|
|
38
|
+
}, null, 2);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAEA,SAAS,WAAW,CAAC,IAAqE;IACxF,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3C,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QACnC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,gCAAgC;QAChC,iGAAiG;QACjG,wDAAwD;QACxD,mEAAmE;QACnE,kFAAkF;QAClF,0DAA0D;QAC1D,iEAAiE;KAClE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAKvC;IACC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,mEAAmE;QACnE,8EAA8E;QAC9E,qCAAqC;QACrC,2DAA2D;QAC3D,yEAAyE;QACzE,oDAAoD;QACpD,0DAA0D;KAC3D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACC,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;QAC/E,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;KAChF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI provider catalog. Pure metadata — no network, no secrets — so it is safe
|
|
3
|
+
* to import from the config layer and the `manifest` command. The HTTP adapters
|
|
4
|
+
* that actually call these providers live in {@link file://./client.ts}.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PROVIDER_IDS: readonly ["anthropic", "openai", "google", "xai", "mock"];
|
|
7
|
+
export type ProviderId = (typeof PROVIDER_IDS)[number];
|
|
8
|
+
export interface ProviderInfo {
|
|
9
|
+
id: ProviderId;
|
|
10
|
+
label: string;
|
|
11
|
+
defaultModel: string;
|
|
12
|
+
recommendedModels: string[];
|
|
13
|
+
/** Whether an API key must be configured before this provider can be used. */
|
|
14
|
+
requiresKey: boolean;
|
|
15
|
+
/** Dot-path in the config file where this provider's key is stored. */
|
|
16
|
+
keyConfigPath: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const DEFAULT_PROVIDER: ProviderId;
|
|
19
|
+
export declare const PROVIDER_CATALOG: Record<ProviderId, ProviderInfo>;
|
|
20
|
+
export declare function isProviderId(value: string): value is ProviderId;
|
|
21
|
+
export declare function getProviderInfo(id: ProviderId): ProviderInfo;
|
|
22
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,2DAA4D,CAAC;AAEtF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,WAAW,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,UAAwB,CAAC;AAExD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAyC7D,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,YAAY,CAE5D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI provider catalog. Pure metadata — no network, no secrets — so it is safe
|
|
3
|
+
* to import from the config layer and the `manifest` command. The HTTP adapters
|
|
4
|
+
* that actually call these providers live in {@link file://./client.ts}.
|
|
5
|
+
*/
|
|
6
|
+
export const PROVIDER_IDS = ["anthropic", "openai", "google", "xai", "mock"];
|
|
7
|
+
export const DEFAULT_PROVIDER = "anthropic";
|
|
8
|
+
export const PROVIDER_CATALOG = {
|
|
9
|
+
anthropic: {
|
|
10
|
+
id: "anthropic",
|
|
11
|
+
label: "Anthropic Claude",
|
|
12
|
+
defaultModel: "claude-sonnet-4-6",
|
|
13
|
+
recommendedModels: ["claude-haiku-4-5", "claude-sonnet-4-6", "claude-opus-4-8"],
|
|
14
|
+
requiresKey: true,
|
|
15
|
+
keyConfigPath: "providers.anthropic.apiKey",
|
|
16
|
+
},
|
|
17
|
+
openai: {
|
|
18
|
+
id: "openai",
|
|
19
|
+
label: "OpenAI",
|
|
20
|
+
defaultModel: "gpt-5-mini",
|
|
21
|
+
recommendedModels: ["gpt-5-mini", "gpt-5.4", "gpt-4.1", "gpt-4.1-mini"],
|
|
22
|
+
requiresKey: true,
|
|
23
|
+
keyConfigPath: "providers.openai.apiKey",
|
|
24
|
+
},
|
|
25
|
+
google: {
|
|
26
|
+
id: "google",
|
|
27
|
+
label: "Google Gemini",
|
|
28
|
+
defaultModel: "gemini-2.5-flash",
|
|
29
|
+
recommendedModels: ["gemini-2.5-flash", "gemini-2.5-flash-lite", "gemini-2.5-pro"],
|
|
30
|
+
requiresKey: true,
|
|
31
|
+
keyConfigPath: "providers.google.apiKey",
|
|
32
|
+
},
|
|
33
|
+
xai: {
|
|
34
|
+
id: "xai",
|
|
35
|
+
label: "xAI Grok",
|
|
36
|
+
defaultModel: "grok-4-fast",
|
|
37
|
+
recommendedModels: ["grok-4-fast", "grok-4", "grok-3-mini"],
|
|
38
|
+
requiresKey: true,
|
|
39
|
+
keyConfigPath: "providers.xai.apiKey",
|
|
40
|
+
},
|
|
41
|
+
mock: {
|
|
42
|
+
id: "mock",
|
|
43
|
+
label: "Deterministic mock (offline)",
|
|
44
|
+
defaultModel: "deterministic-v1",
|
|
45
|
+
recommendedModels: ["deterministic-v1"],
|
|
46
|
+
requiresKey: false,
|
|
47
|
+
keyConfigPath: "providers.mock.apiKey",
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
export function isProviderId(value) {
|
|
51
|
+
return PROVIDER_IDS.includes(value);
|
|
52
|
+
}
|
|
53
|
+
export function getProviderInfo(id) {
|
|
54
|
+
return PROVIDER_CATALOG[id];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAetF,MAAM,CAAC,MAAM,gBAAgB,GAAe,WAAW,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,kBAAkB;QACzB,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;QAC/E,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,4BAA4B;KAC5C;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE,YAAY;QAC1B,iBAAiB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC;QACvE,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,yBAAyB;KACzC;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,eAAe;QACtB,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,gBAAgB,CAAC;QAClF,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,yBAAyB;KACzC;IACD,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,aAAa;QAC3B,iBAAiB,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC;QAC3D,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,sBAAsB;KACtC;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,8BAA8B;QACrC,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;QACvC,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,uBAAuB;KACvC;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAc;IAC5C,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ConfigStore } from "../core/config.js";
|
|
2
|
+
import { type ProviderId } from "./providers.js";
|
|
3
|
+
export interface ResolvedProvider {
|
|
4
|
+
provider: ProviderId;
|
|
5
|
+
model: string;
|
|
6
|
+
apiKey: string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface ResolveOptions {
|
|
9
|
+
provider?: string | undefined;
|
|
10
|
+
model?: string | undefined;
|
|
11
|
+
apiKey?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolve which provider/model/key to use for a run. Precedence per field:
|
|
15
|
+
* provider: --provider > config.defaultProvider > built-in default
|
|
16
|
+
* model: --model > config providers.<id>.model > config.defaultModel* > catalog default
|
|
17
|
+
* apiKey: --api-key > config providers.<id>.apiKey > none
|
|
18
|
+
* (*defaultModel only applies when the chosen provider is the default provider)
|
|
19
|
+
*
|
|
20
|
+
* No environment variables are consulted: credentials come from CLI flags or
|
|
21
|
+
* the managed config store, both populated through CLI commands.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveProvider(config: ConfigStore, opts: ResolveOptions): ResolvedProvider;
|
|
24
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/ai/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAoB,KAAK,UAAU,EAAiC,MAAM,gBAAgB,CAAC;AAElG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,gBAAgB,CA8B3F"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CliError } from "../core/errors.js";
|
|
2
|
+
import { DEFAULT_PROVIDER, getProviderInfo, isProviderId } from "./providers.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve which provider/model/key to use for a run. Precedence per field:
|
|
5
|
+
* provider: --provider > config.defaultProvider > built-in default
|
|
6
|
+
* model: --model > config providers.<id>.model > config.defaultModel* > catalog default
|
|
7
|
+
* apiKey: --api-key > config providers.<id>.apiKey > none
|
|
8
|
+
* (*defaultModel only applies when the chosen provider is the default provider)
|
|
9
|
+
*
|
|
10
|
+
* No environment variables are consulted: credentials come from CLI flags or
|
|
11
|
+
* the managed config store, both populated through CLI commands.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveProvider(config, opts) {
|
|
14
|
+
if (opts.provider && !isProviderId(opts.provider)) {
|
|
15
|
+
throw new CliError("VALIDATION", `Unknown provider "${opts.provider}".`, {
|
|
16
|
+
details: { provider: opts.provider },
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const stored = config.read();
|
|
20
|
+
const provider = opts.provider ?? config.getDefaultProvider() ?? DEFAULT_PROVIDER;
|
|
21
|
+
const info = getProviderInfo(provider);
|
|
22
|
+
const providerConfig = config.getProviderConfig(provider);
|
|
23
|
+
const model = opts.model?.trim() ||
|
|
24
|
+
providerConfig.model?.trim() ||
|
|
25
|
+
(provider === stored.defaultProvider ? stored.defaultModel?.trim() : undefined) ||
|
|
26
|
+
info.defaultModel;
|
|
27
|
+
const apiKey = opts.apiKey?.trim() || providerConfig.apiKey?.trim() || null;
|
|
28
|
+
if (info.requiresKey && !apiKey) {
|
|
29
|
+
throw new CliError("MISSING_CREDENTIALS", `No API key configured for ${info.label}. Run "tenbrains setup --provider ${provider} --api-key <KEY>", or "tenbrains config set ${info.keyConfigPath} <KEY>", or pass --api-key.`, { details: { provider, keyConfigPath: info.keyConfigPath } });
|
|
30
|
+
}
|
|
31
|
+
return { provider, model, apiKey };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ai/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAmB,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAclG;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB,EAAE,IAAoB;IACvE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAAC,YAAY,EAAE,qBAAqB,IAAI,CAAC,QAAQ,IAAI,EAAE;YACvE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,QAAQ,GACX,IAAI,CAAC,QAAmC,IAAI,MAAM,CAAC,kBAAkB,EAAE,IAAI,gBAAgB,CAAC;IAC/F,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE1D,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAClB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;QAC5B,CAAC,QAAQ,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,IAAI,CAAC,YAAY,CAAC;IAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAE5E,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAChB,qBAAqB,EACrB,6BAA6B,IAAI,CAAC,KAAK,qCAAqC,QAAQ,+CAA+C,IAAI,CAAC,aAAa,6BAA6B,EAClL,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/bin/preflight.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const original = process.emitWarning.bind(process);
|
|
2
|
+
const filtered = ((warning, ...rest) => {
|
|
3
|
+
const message = typeof warning === "string" ? warning : warning.message;
|
|
4
|
+
if (message.includes("SQLite is an experimental feature")) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
original(warning, ...rest);
|
|
8
|
+
});
|
|
9
|
+
process.emitWarning = filtered;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/bin/preflight.ts"],"names":[],"mappings":"AAOA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAiC,CAAC;AAEnF,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAuB,EAAE,GAAG,IAAe,EAAQ,EAAE;IACtE,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxE,IAAI,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAgB,CAAC;AAElB,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenbrains.d.ts","sourceRoot":"","sources":["../../src/bin/tenbrains.ts"],"names":[],"mappings":";AACA,OAAO,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import "./preflight.js";
|
|
3
|
+
import { run } from "../cli.js";
|
|
4
|
+
run(process.argv).catch((error) => {
|
|
5
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
6
|
+
process.stderr.write(`tenbrains: fatal: ${message}\n`);
|
|
7
|
+
process.exitCode = 1;
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=tenbrains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenbrains.js","sourceRoot":"","sources":["../../src/bin/tenbrains.ts"],"names":[],"mappings":";AACA,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACzC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AA2KpD,wBAAgB,YAAY,IAAI,OAAO,CA4ftC;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBvD"}
|