tinker-agent 1.0.65 → 1.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/CHANGELOG.md +36 -0
- package/LICENSE +201 -0
- package/NOTICE +6 -0
- package/README.md +90 -9
- package/bin/tinker.js +39 -0
- package/node_modules/ansi-regex/index.d.ts +33 -0
- package/node_modules/ansi-regex/index.js +14 -0
- package/node_modules/ansi-regex/license +9 -0
- package/node_modules/ansi-regex/package.json +61 -0
- package/node_modules/ansi-regex/readme.md +66 -0
- package/node_modules/ansi-styles/index.d.ts +236 -0
- package/node_modules/ansi-styles/index.js +223 -0
- package/node_modules/ansi-styles/license +9 -0
- package/node_modules/ansi-styles/package.json +54 -0
- package/node_modules/ansi-styles/readme.md +173 -0
- package/node_modules/chalk/license +9 -0
- package/node_modules/chalk/package.json +83 -0
- package/node_modules/chalk/readme.md +297 -0
- package/node_modules/chalk/source/index.d.ts +325 -0
- package/node_modules/chalk/source/index.js +225 -0
- package/node_modules/chalk/source/utilities.js +33 -0
- package/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
- package/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
- package/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
- package/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
- package/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
- package/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
- package/node_modules/character-entities/index.d.ts +6 -0
- package/node_modules/character-entities/index.js +2132 -0
- package/node_modules/character-entities/license +22 -0
- package/node_modules/character-entities/package.json +78 -0
- package/node_modules/character-entities/readme.md +152 -0
- package/node_modules/decode-named-character-reference/index.d.ts +13 -0
- package/node_modules/decode-named-character-reference/index.d.ts.map +1 -0
- package/node_modules/decode-named-character-reference/index.dom.d.ts +6 -0
- package/node_modules/decode-named-character-reference/index.dom.d.ts.map +1 -0
- package/node_modules/decode-named-character-reference/index.dom.js +32 -0
- package/node_modules/decode-named-character-reference/index.js +19 -0
- package/node_modules/decode-named-character-reference/license +22 -0
- package/node_modules/decode-named-character-reference/package.json +90 -0
- package/node_modules/decode-named-character-reference/readme.md +136 -0
- package/node_modules/get-east-asian-width/index.d.ts +60 -0
- package/node_modules/get-east-asian-width/index.js +30 -0
- package/node_modules/get-east-asian-width/license +9 -0
- package/node_modules/get-east-asian-width/lookup-data.js +21 -0
- package/node_modules/get-east-asian-width/lookup.js +138 -0
- package/node_modules/get-east-asian-width/package.json +71 -0
- package/node_modules/get-east-asian-width/readme.md +65 -0
- package/node_modules/get-east-asian-width/utilities.js +24 -0
- package/node_modules/has-flag/index.d.ts +39 -0
- package/node_modules/has-flag/index.js +8 -0
- package/node_modules/has-flag/license +9 -0
- package/node_modules/has-flag/package.json +49 -0
- package/node_modules/has-flag/readme.md +74 -0
- package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
- package/node_modules/is-fullwidth-code-point/index.js +12 -0
- package/node_modules/is-fullwidth-code-point/license +9 -0
- package/node_modules/is-fullwidth-code-point/package.json +53 -0
- package/node_modules/is-fullwidth-code-point/readme.md +31 -0
- package/node_modules/markdansi/LICENSE +21 -0
- package/node_modules/markdansi/README.md +167 -0
- package/node_modules/markdansi/dist/ast.d.ts +99 -0
- package/node_modules/markdansi/dist/ast.js +1 -0
- package/node_modules/markdansi/dist/cli.d.ts +17 -0
- package/node_modules/markdansi/dist/cli.js +208 -0
- package/node_modules/markdansi/dist/hyperlink.d.ts +9 -0
- package/node_modules/markdansi/dist/hyperlink.js +26 -0
- package/node_modules/markdansi/dist/index.d.ts +10 -0
- package/node_modules/markdansi/dist/index.js +16 -0
- package/node_modules/markdansi/dist/parser.d.ts +2 -0
- package/node_modules/markdansi/dist/parser.js +205 -0
- package/node_modules/markdansi/dist/render.d.ts +9 -0
- package/node_modules/markdansi/dist/render.js +680 -0
- package/node_modules/markdansi/dist/stream.d.ts +39 -0
- package/node_modules/markdansi/dist/stream.js +192 -0
- package/node_modules/markdansi/dist/theme.d.ts +18 -0
- package/node_modules/markdansi/dist/theme.js +105 -0
- package/node_modules/markdansi/dist/types.d.ts +58 -0
- package/node_modules/markdansi/dist/types.js +1 -0
- package/node_modules/markdansi/dist/wrap.d.ts +10 -0
- package/node_modules/markdansi/dist/wrap.js +73 -0
- package/node_modules/markdansi/docs/spec.md +110 -0
- package/node_modules/markdansi/package.json +78 -0
- package/node_modules/markdansi/tsconfig.json +18 -0
- package/node_modules/marked/LICENSE +44 -0
- package/node_modules/marked/README.md +115 -0
- package/node_modules/marked/bin/main.js +284 -0
- package/node_modules/marked/bin/marked.js +16 -0
- package/node_modules/marked/lib/marked.d.ts +760 -0
- package/node_modules/marked/lib/marked.esm.js +77 -0
- package/node_modules/marked/lib/marked.esm.js.map +7 -0
- package/node_modules/marked/lib/marked.umd.js +79 -0
- package/node_modules/marked/lib/marked.umd.js.map +7 -0
- package/node_modules/marked/man/marked.1 +113 -0
- package/node_modules/marked/man/marked.1.md +93 -0
- package/node_modules/marked/package.json +103 -0
- package/node_modules/slice-ansi/index.d.ts +19 -0
- package/node_modules/slice-ansi/index.js +317 -0
- package/node_modules/slice-ansi/license +10 -0
- package/node_modules/slice-ansi/package.json +59 -0
- package/node_modules/slice-ansi/readme.md +55 -0
- package/node_modules/slice-ansi/tokenize-ansi.js +752 -0
- package/node_modules/string-width/index.d.ts +39 -0
- package/node_modules/string-width/index.js +203 -0
- package/node_modules/string-width/license +9 -0
- package/node_modules/string-width/package.json +65 -0
- package/node_modules/string-width/readme.md +66 -0
- package/node_modules/strip-ansi/index.d.ts +15 -0
- package/node_modules/strip-ansi/index.js +19 -0
- package/node_modules/strip-ansi/license +9 -0
- package/node_modules/strip-ansi/package.json +59 -0
- package/node_modules/strip-ansi/readme.md +37 -0
- package/node_modules/supports-color/browser.d.ts +1 -0
- package/node_modules/supports-color/browser.js +35 -0
- package/node_modules/supports-color/index.d.ts +55 -0
- package/node_modules/supports-color/index.js +202 -0
- package/node_modules/supports-color/license +9 -0
- package/node_modules/supports-color/package.json +64 -0
- package/node_modules/supports-color/readme.md +75 -0
- package/node_modules/supports-hyperlinks/browser.js +10 -0
- package/node_modules/supports-hyperlinks/index.d.ts +25 -0
- package/node_modules/supports-hyperlinks/index.js +163 -0
- package/node_modules/supports-hyperlinks/license +10 -0
- package/node_modules/supports-hyperlinks/package.json +47 -0
- package/node_modules/supports-hyperlinks/readme.md +45 -0
- package/package.json +41 -10
- package/patches/markdansi@0.3.2.patch +22 -2
- package/src/agent/context-builder.ts +24 -10
- package/src/agent/context-meter.ts +89 -5
- package/src/agent/loop.ts +107 -10
- package/src/agent/runtime-session.ts +1437 -82
- package/src/agent/session-ledger.ts +169 -29
- package/src/agent/types.ts +12 -1
- package/src/agent/user-prompt-projection.ts +62 -0
- package/src/cli/config.ts +57 -14
- package/src/cli/model-profiles.ts +124 -0
- package/src/cli/run-runner.ts +4 -1
- package/src/cli/tui-runner.tsx +68 -30
- package/src/context/compiled-context-hash.ts +1 -1
- package/src/context/compiled-context-validator.ts +92 -15
- package/src/context/context-automation-policy.ts +121 -0
- package/src/context/context-manager.ts +390 -11
- package/src/context/context-policy.ts +8 -0
- package/src/context/context-protocol-validator.ts +11 -1
- package/src/context/context-revision-compiler.ts +190 -27
- package/src/context/context-revision.ts +105 -19
- package/src/context/context-surface.ts +329 -0
- package/src/context/prefix-retirement-planner.ts +570 -0
- package/src/context/protocol-frame.ts +30 -3
- package/src/context/recall-retirement-contract.ts +27 -0
- package/src/context/swap-planner.ts +34 -10
- package/src/events/observation-text-log.ts +3 -3
- package/src/events/stdout-event-printer.ts +39 -3
- package/src/events/types.ts +172 -35
- package/src/ids/runtime-id.ts +6 -0
- package/src/ids/uuid-v7.ts +7 -0
- package/src/image/image-asset-store.ts +319 -0
- package/src/image/image-input-policy.ts +14 -0
- package/src/image/image-probe.ts +233 -0
- package/src/image/image-types.ts +262 -0
- package/src/instructions/project-instructions.ts +4 -1
- package/src/mcp/mcp-manager.ts +83 -19
- package/src/model/fake-model-client.ts +9 -1
- package/src/model/input-token-estimator.ts +25 -0
- package/src/model/model-client.ts +60 -0
- package/src/model/model-request-preflight.ts +1 -0
- package/src/model/moonshot-input-token-estimator.ts +107 -0
- package/src/model/openai-chat-mapping.ts +77 -1
- package/src/model/openai-chat-model-client.ts +389 -59
- package/src/model/openai-chat-stream.ts +272 -0
- package/src/model/prompt-prefix-hash.ts +2 -4
- package/src/model/token-estimator.ts +4 -0
- package/src/observation/observation-builder.ts +29 -0
- package/src/session/resume-projection.ts +94 -34
- package/src/session/session-catalog.ts +4 -4
- package/src/session/session-errors.ts +1 -1
- package/src/session/session-history-reader.ts +151 -4
- package/src/session/session-last-response-reader.ts +189 -0
- package/src/session/session-schema.ts +349 -35
- package/src/session/session-store.ts +3266 -255
- package/src/session/sqlite-session-ledger.ts +9 -4
- package/src/skills/skill-catalog.ts +182 -0
- package/src/skills/skill-context.ts +364 -0
- package/src/skills/skill-loader.ts +779 -0
- package/src/skills/skill-tool.ts +297 -0
- package/src/tools/edit.ts +51 -64
- package/src/tools/ensure-parent-directory.ts +6 -0
- package/src/tools/read.ts +2 -2
- package/src/tools/recall.ts +43 -40
- package/src/tools/registry.ts +24 -3
- package/src/tools/ripgrep.ts +3 -2
- package/src/tools/types.ts +43 -4
- package/src/tools/write.ts +20 -31
- package/src/tui/app.tsx +333 -96
- package/src/tui/clipboard.ts +5 -0
- package/src/tui/components/mcp-panel.tsx +28 -0
- package/src/tui/components/prompt-input.tsx +790 -257
- package/src/tui/components/skills-panel.tsx +31 -0
- package/src/tui/components/timeline.tsx +30 -1
- package/src/tui/event-store.ts +85 -2
- package/src/tui/file-mention.ts +234 -0
- package/src/tui/line-editor.ts +1 -0
- package/src/tui/project-slash-commands.ts +229 -0
- package/src/tui/prompt-draft.ts +510 -0
- package/src/tui/prompt-history.ts +294 -22
- package/src/tui/slash-commands.ts +46 -2
- package/src/tui/tui-session-controller.ts +110 -48
- package/src/tui/workspace-file-search.ts +94 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { decodeNamedCharacterReference } from "decode-named-character-reference";
|
|
2
|
+
import { marked } from "marked";
|
|
3
|
+
const CHARACTER_REFERENCE = /&(#\d+|#x[\da-f]+|[a-z][\da-z]+);/giu;
|
|
4
|
+
function decodeNumericReference(body, radix) {
|
|
5
|
+
const offset = radix === 16 ? 2 : 1;
|
|
6
|
+
const codePoint = Number.parseInt(body.slice(offset), radix);
|
|
7
|
+
const isDisallowedControl = codePoint <= 0x08 ||
|
|
8
|
+
codePoint === 0x0b ||
|
|
9
|
+
(codePoint >= 0x0e && codePoint <= 0x1f) ||
|
|
10
|
+
(codePoint >= 0x7f && codePoint <= 0x9f);
|
|
11
|
+
const isNonCharacter = (codePoint >= 0xfdd0 && codePoint <= 0xfdef) ||
|
|
12
|
+
(codePoint & 0xffff) === 0xfffe ||
|
|
13
|
+
(codePoint & 0xffff) === 0xffff;
|
|
14
|
+
if (!Number.isSafeInteger(codePoint) ||
|
|
15
|
+
codePoint <= 0 ||
|
|
16
|
+
codePoint > 0x10ffff ||
|
|
17
|
+
(codePoint >= 0xd800 && codePoint <= 0xdfff) ||
|
|
18
|
+
isDisallowedControl ||
|
|
19
|
+
isNonCharacter) {
|
|
20
|
+
return "\uFFFD";
|
|
21
|
+
}
|
|
22
|
+
return String.fromCodePoint(codePoint);
|
|
23
|
+
}
|
|
24
|
+
function decodeEntities(value) {
|
|
25
|
+
return value.replace(CHARACTER_REFERENCE, (reference, body) => {
|
|
26
|
+
if (body.startsWith("#x") || body.startsWith("#X")) {
|
|
27
|
+
return decodeNumericReference(body, 16);
|
|
28
|
+
}
|
|
29
|
+
if (body.startsWith("#")) {
|
|
30
|
+
return decodeNumericReference(body, 10);
|
|
31
|
+
}
|
|
32
|
+
return decodeNamedCharacterReference(body) || reference;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function convertInlineTokens(tokens) {
|
|
36
|
+
if (!tokens)
|
|
37
|
+
return [];
|
|
38
|
+
const nodes = [];
|
|
39
|
+
for (const token of tokens) {
|
|
40
|
+
switch (token.type) {
|
|
41
|
+
case "text": {
|
|
42
|
+
const text = token;
|
|
43
|
+
if (text.tokens?.length) {
|
|
44
|
+
nodes.push(...convertInlineTokens(text.tokens));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
nodes.push({ type: "text", value: decodeEntities(text.text) });
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case "escape":
|
|
52
|
+
nodes.push({ type: "text", value: token.text });
|
|
53
|
+
break;
|
|
54
|
+
case "em":
|
|
55
|
+
nodes.push({
|
|
56
|
+
type: "emphasis",
|
|
57
|
+
children: convertInlineTokens(token.tokens),
|
|
58
|
+
});
|
|
59
|
+
break;
|
|
60
|
+
case "strong":
|
|
61
|
+
nodes.push({
|
|
62
|
+
type: "strong",
|
|
63
|
+
children: convertInlineTokens(token.tokens),
|
|
64
|
+
});
|
|
65
|
+
break;
|
|
66
|
+
case "del":
|
|
67
|
+
nodes.push({
|
|
68
|
+
type: "delete",
|
|
69
|
+
children: convertInlineTokens(token.tokens),
|
|
70
|
+
});
|
|
71
|
+
break;
|
|
72
|
+
case "codespan":
|
|
73
|
+
nodes.push({ type: "inlineCode", value: token.text });
|
|
74
|
+
break;
|
|
75
|
+
case "link": {
|
|
76
|
+
const link = token;
|
|
77
|
+
nodes.push({
|
|
78
|
+
type: "link",
|
|
79
|
+
url: decodeEntities(link.href),
|
|
80
|
+
title: link.title ? decodeEntities(link.title) : link.title,
|
|
81
|
+
children: convertInlineTokens(link.tokens),
|
|
82
|
+
});
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case "br":
|
|
86
|
+
nodes.push({ type: "break" });
|
|
87
|
+
break;
|
|
88
|
+
case "html":
|
|
89
|
+
nodes.push({ type: "html", value: token.text });
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return nodes;
|
|
96
|
+
}
|
|
97
|
+
function convertCode(token) {
|
|
98
|
+
const info = token.lang?.trim() ?? "";
|
|
99
|
+
const separator = info.search(/\s/u);
|
|
100
|
+
const lang = separator >= 0 ? info.slice(0, separator) : info;
|
|
101
|
+
const meta = separator >= 0 ? info.slice(separator).trim() : "";
|
|
102
|
+
return {
|
|
103
|
+
type: "code",
|
|
104
|
+
value: token.text,
|
|
105
|
+
...(lang ? { lang } : {}),
|
|
106
|
+
...(meta ? { meta } : {}),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function convertListItem(item) {
|
|
110
|
+
return {
|
|
111
|
+
type: "listItem",
|
|
112
|
+
checked: item.task ? Boolean(item.checked) : null,
|
|
113
|
+
spread: item.loose,
|
|
114
|
+
children: convertBlockTokens(item.tokens),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function convertTableCell(cell) {
|
|
118
|
+
return {
|
|
119
|
+
type: "tableCell",
|
|
120
|
+
children: convertInlineTokens(cell.tokens),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function convertTableRow(cells) {
|
|
124
|
+
return {
|
|
125
|
+
type: "tableRow",
|
|
126
|
+
children: cells.map(convertTableCell),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function convertBlockToken(token) {
|
|
130
|
+
switch (token.type) {
|
|
131
|
+
case "paragraph":
|
|
132
|
+
return {
|
|
133
|
+
type: "paragraph",
|
|
134
|
+
children: convertInlineTokens(token.tokens),
|
|
135
|
+
};
|
|
136
|
+
case "text": {
|
|
137
|
+
const text = token;
|
|
138
|
+
return {
|
|
139
|
+
type: "paragraph",
|
|
140
|
+
children: text.tokens?.length
|
|
141
|
+
? convertInlineTokens(text.tokens)
|
|
142
|
+
: [{ type: "text", value: decodeEntities(text.text) }],
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
case "heading": {
|
|
146
|
+
const heading = token;
|
|
147
|
+
return {
|
|
148
|
+
type: "heading",
|
|
149
|
+
depth: heading.depth,
|
|
150
|
+
children: convertInlineTokens(heading.tokens),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
case "hr":
|
|
154
|
+
return { type: "thematicBreak" };
|
|
155
|
+
case "blockquote":
|
|
156
|
+
return {
|
|
157
|
+
type: "blockquote",
|
|
158
|
+
children: convertBlockTokens(token.tokens),
|
|
159
|
+
};
|
|
160
|
+
case "list": {
|
|
161
|
+
const list = token;
|
|
162
|
+
return {
|
|
163
|
+
type: "list",
|
|
164
|
+
ordered: list.ordered,
|
|
165
|
+
start: list.ordered && typeof list.start === "number" ? list.start : null,
|
|
166
|
+
spread: list.loose,
|
|
167
|
+
children: list.items.map(convertListItem),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
case "code":
|
|
171
|
+
return convertCode(token);
|
|
172
|
+
case "table": {
|
|
173
|
+
const table = token;
|
|
174
|
+
return {
|
|
175
|
+
type: "table",
|
|
176
|
+
align: table.align,
|
|
177
|
+
children: [convertTableRow(table.header), ...table.rows.map(convertTableRow)],
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
case "def": {
|
|
181
|
+
const definition = token;
|
|
182
|
+
const title = decodeEntities((definition.title ?? "").replace(/\s+/gu, " ").trim());
|
|
183
|
+
return {
|
|
184
|
+
type: "definition",
|
|
185
|
+
identifier: definition.tag,
|
|
186
|
+
url: decodeEntities(definition.href),
|
|
187
|
+
title: title || null,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
default:
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function convertBlockTokens(tokens) {
|
|
195
|
+
return tokens.flatMap((token) => {
|
|
196
|
+
const node = convertBlockToken(token);
|
|
197
|
+
return node ? [node] : [];
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
export function parse(markdown) {
|
|
201
|
+
return {
|
|
202
|
+
type: "root",
|
|
203
|
+
children: convertBlockTokens(marked.lexer(markdown, { gfm: true })),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RenderOptions } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Render Markdown input to an ANSI string.
|
|
4
|
+
*/
|
|
5
|
+
export declare function render(markdown: string, userOptions?: RenderOptions): string;
|
|
6
|
+
/**
|
|
7
|
+
* Create a reusable renderer with fixed options.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createRenderer(options?: RenderOptions): (md: string) => string;
|