zelari-code 0.7.9 → 0.7.11
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 +37 -37
- package/README.md +320 -295
- package/bin/zelari-code.js +62 -62
- package/dist/cli/app.js +33 -3
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/components/LiveRegion.js +7 -3
- package/dist/cli/components/LiveRegion.js.map +1 -1
- package/dist/cli/components/SelectList.js +67 -0
- package/dist/cli/components/SelectList.js.map +1 -0
- package/dist/cli/components/Spinner.js +51 -0
- package/dist/cli/components/Spinner.js.map +1 -0
- package/dist/cli/components/SplashScreen.js +85 -85
- package/dist/cli/components/StatusBar.js +42 -34
- package/dist/cli/components/StatusBar.js.map +1 -1
- package/dist/cli/headless.js +10 -10
- package/dist/cli/hooks/useSlashDispatch.js +11 -1
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/keyStore.js +2 -2
- package/dist/cli/keyStore.js.map +1 -1
- package/dist/cli/main.bundled.js +15146 -14919
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +1 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/modelDiscovery.js +42 -5
- package/dist/cli/modelDiscovery.js.map +1 -1
- package/dist/cli/provider/openai-compatible.js +4 -2
- package/dist/cli/provider/openai-compatible.js.map +1 -1
- package/dist/cli/slashCommands.js +22 -5
- package/dist/cli/slashCommands.js.map +1 -1
- package/dist/cli/slashHandlers/provider.js +102 -5
- package/dist/cli/slashHandlers/provider.js.map +1 -1
- package/package.json +2 -2
- package/dist/agents/advancedTools.js +0 -115
- package/dist/agents/advancedTools.js.map +0 -1
- package/dist/agents/councilApi.js +0 -375
- package/dist/agents/councilApi.js.map +0 -1
- package/dist/agents/councilDirectives.js +0 -100
- package/dist/agents/councilDirectives.js.map +0 -1
- package/dist/agents/promoteMember.js +0 -210
- package/dist/agents/promoteMember.js.map +0 -1
- package/dist/agents/promptModules.js +0 -139
- package/dist/agents/promptModules.js.map +0 -1
- package/dist/agents/roles.js +0 -299
- package/dist/agents/roles.js.map +0 -1
- package/dist/agents/skills/builtin/debugging.js +0 -248
- package/dist/agents/skills/builtin/debugging.js.map +0 -1
- package/dist/agents/skills/builtin/docs.js +0 -301
- package/dist/agents/skills/builtin/docs.js.map +0 -1
- package/dist/agents/skills/builtin/git-ops.js +0 -301
- package/dist/agents/skills/builtin/git-ops.js.map +0 -1
- package/dist/agents/skills/builtin/planning.js +0 -335
- package/dist/agents/skills/builtin/planning.js.map +0 -1
- package/dist/agents/skills/builtin/refactoring.js +0 -261
- package/dist/agents/skills/builtin/refactoring.js.map +0 -1
- package/dist/agents/skills/builtin/review.js +0 -302
- package/dist/agents/skills/builtin/review.js.map +0 -1
- package/dist/agents/skills/builtin/testing.js +0 -245
- package/dist/agents/skills/builtin/testing.js.map +0 -1
- package/dist/agents/skills.js +0 -272
- package/dist/agents/skills.js.map +0 -1
- package/dist/agents/systemPromptBuilder.js +0 -151
- package/dist/agents/systemPromptBuilder.js.map +0 -1
- package/dist/agents/toolSchemas.js +0 -249
- package/dist/agents/toolSchemas.js.map +0 -1
- package/dist/agents/tools.js +0 -196
- package/dist/agents/tools.js.map +0 -1
- package/dist/agents/vaultTools.js +0 -134
- package/dist/agents/vaultTools.js.map +0 -1
- package/dist/cli/components/CollapsibleToolOutput.js +0 -43
- package/dist/cli/components/CollapsibleToolOutput.js.map +0 -1
- package/dist/cli/components/Header.js +0 -38
- package/dist/cli/components/Header.js.map +0 -1
- package/dist/main/core/AgentHarness.js +0 -467
- package/dist/main/core/AgentHarness.js.map +0 -1
- package/dist/main/core/providerStream.js +0 -99
- package/dist/main/core/providerStream.js.map +0 -1
- package/dist/main/core/sessionJsonl.js +0 -99
- package/dist/main/core/sessionJsonl.js.map +0 -1
- package/dist/main/core/tools/auditLog.js +0 -26
- package/dist/main/core/tools/auditLog.js.map +0 -1
- package/dist/main/core/tools/builtin/filesystem.js +0 -110
- package/dist/main/core/tools/builtin/filesystem.js.map +0 -1
- package/dist/main/core/tools/builtin/listFiles.js +0 -86
- package/dist/main/core/tools/builtin/listFiles.js.map +0 -1
- package/dist/main/core/tools/builtin/search.js +0 -56
- package/dist/main/core/tools/builtin/search.js.map +0 -1
- package/dist/main/core/tools/builtin/shell.js +0 -51
- package/dist/main/core/tools/builtin/shell.js.map +0 -1
- package/dist/main/core/tools/registry.js +0 -71
- package/dist/main/core/tools/registry.js.map +0 -1
- package/dist/main/core/tools/toolTypes.js +0 -8
- package/dist/main/core/tools/toolTypes.js.map +0 -1
- package/dist/main/core/tools/zodBridge.js +0 -56
- package/dist/main/core/tools/zodBridge.js.map +0 -1
- package/dist/shared/eventBus.js +0 -104
- package/dist/shared/eventBus.js.map +0 -1
- package/dist/shared/events.js +0 -73
- package/dist/shared/events.js.map +0 -1
- package/dist/shared/index.js +0 -8
- package/dist/shared/index.js.map +0 -1
- package/dist/types/context.js +0 -3
- package/dist/types/context.js.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/knowledge.js +0 -2
- package/dist/types/knowledge.js.map +0 -1
- package/dist/types/systemTypes.js +0 -10
- package/dist/types/systemTypes.js.map +0 -1
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/** Helper to build a ToolParameter concisely. */
|
|
2
|
-
function p(name, type, description, required, extra) {
|
|
3
|
-
return { name, type, description, required, ...extra };
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Knowledge Vault tools.
|
|
7
|
-
*
|
|
8
|
-
* These tools operate on KnowledgeDocuments via the ToolContext callbacks
|
|
9
|
-
* (which are wired to the Zustand store).
|
|
10
|
-
*/
|
|
11
|
-
export const VAULT_TOOL_DEFINITIONS = [
|
|
12
|
-
{
|
|
13
|
-
name: 'createDocument',
|
|
14
|
-
description: 'Create a new markdown document in the Knowledge Vault.',
|
|
15
|
-
category: 'vault',
|
|
16
|
-
parameters: [
|
|
17
|
-
p('path', 'string', 'Document path (e.g. "notes/architecture"). Must be unique.', true),
|
|
18
|
-
p('title', 'string', 'Document title', true),
|
|
19
|
-
p('content', 'string', 'Markdown content. Use [[wikilinks]] and #hashtags.', false, { default: '' }),
|
|
20
|
-
p('tags', 'string[]', 'Tag list', false, { default: [] }),
|
|
21
|
-
p('category', 'string', 'Document category', false),
|
|
22
|
-
p('format', 'string', 'Document format', false, { default: 'markdown', enum: ['markdown', 'text', 'json', 'yaml', 'html', 'csv'] }),
|
|
23
|
-
],
|
|
24
|
-
execute: (args, ctx) => {
|
|
25
|
-
if (!ctx.addDocument)
|
|
26
|
-
return 'Vault not available in this context.';
|
|
27
|
-
const doc = ctx.addDocument({
|
|
28
|
-
path: args['path'] ?? '',
|
|
29
|
-
title: args['title'] ?? 'Untitled',
|
|
30
|
-
content: args['content'] ?? '',
|
|
31
|
-
format: (args['format'] ?? 'markdown'),
|
|
32
|
-
tags: args['tags'] ?? [],
|
|
33
|
-
frontmatter: {},
|
|
34
|
-
category: args['category'] ?? undefined,
|
|
35
|
-
workspaceId: ctx.workspaceId,
|
|
36
|
-
});
|
|
37
|
-
ctx.addActivity('task', 'document created', doc.title);
|
|
38
|
-
return `Document "${doc.title}" created at path "${doc.path}".`;
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'updateDocument',
|
|
43
|
-
description: 'Update an existing Knowledge Vault document (by id).',
|
|
44
|
-
category: 'vault',
|
|
45
|
-
parameters: [
|
|
46
|
-
p('id', 'string', 'Document id to update', true),
|
|
47
|
-
p('content', 'string', 'New markdown content', false),
|
|
48
|
-
p('title', 'string', 'New title', false),
|
|
49
|
-
p('tags', 'string[]', 'New tag list (replaces existing)', false),
|
|
50
|
-
p('category', 'string', 'New category', false),
|
|
51
|
-
],
|
|
52
|
-
execute: (args, ctx) => {
|
|
53
|
-
if (!ctx.updateDocument)
|
|
54
|
-
return 'Vault not available in this context.';
|
|
55
|
-
const id = args['id'] ?? '';
|
|
56
|
-
const updates = {};
|
|
57
|
-
if (args['content'] !== undefined)
|
|
58
|
-
updates.content = args['content'];
|
|
59
|
-
if (args['title'] !== undefined)
|
|
60
|
-
updates.title = args['title'];
|
|
61
|
-
if (args['tags'] !== undefined)
|
|
62
|
-
updates.tags = args['tags'];
|
|
63
|
-
if (args['category'] !== undefined)
|
|
64
|
-
updates.category = args['category'];
|
|
65
|
-
ctx.updateDocument(id, updates);
|
|
66
|
-
return `Document ${id} updated.`;
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: 'searchDocuments',
|
|
71
|
-
description: 'Search Knowledge Vault documents by free-text query, tag, or category.',
|
|
72
|
-
category: 'vault',
|
|
73
|
-
parameters: [
|
|
74
|
-
p('query', 'string', 'Free-text search query', false),
|
|
75
|
-
p('tag', 'string', 'Filter by tag', false),
|
|
76
|
-
p('category', 'string', 'Filter by category', false),
|
|
77
|
-
p('limit', 'number', 'Max results', false, { default: 10 }),
|
|
78
|
-
],
|
|
79
|
-
execute: (args, ctx) => {
|
|
80
|
-
if (!ctx.searchDocuments)
|
|
81
|
-
return 'Vault search not available in this context.';
|
|
82
|
-
const query = args['query'] ?? '';
|
|
83
|
-
const tag = args['tag'];
|
|
84
|
-
const category = args['category'];
|
|
85
|
-
const limit = args['limit'] ?? 10;
|
|
86
|
-
let results = ctx.searchDocuments(query);
|
|
87
|
-
if (tag)
|
|
88
|
-
results = results.filter((d) => (d.tags ?? []).includes(tag));
|
|
89
|
-
if (category)
|
|
90
|
-
results = results.filter((d) => d.category === category);
|
|
91
|
-
results = results.slice(0, limit);
|
|
92
|
-
if (results.length === 0)
|
|
93
|
-
return 'No matching documents found.';
|
|
94
|
-
return results
|
|
95
|
-
.map((d) => `- ${d.title} (${d.path}) [${(d.tags ?? []).join(', ')}]`)
|
|
96
|
-
.join('\n');
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
name: 'linkDocuments',
|
|
101
|
-
description: 'Create a bidirectional wikilink between two documents by inserting [[target]] into the source.',
|
|
102
|
-
category: 'vault',
|
|
103
|
-
parameters: [
|
|
104
|
-
p('sourceId', 'string', 'Source document id', true),
|
|
105
|
-
p('targetPathOrTitle', 'string', 'Target document path or title', true),
|
|
106
|
-
p('alias', 'string', 'Optional display alias', false),
|
|
107
|
-
],
|
|
108
|
-
execute: (args, ctx) => {
|
|
109
|
-
if (!ctx.linkDocuments)
|
|
110
|
-
return 'Vault linking not available in this context.';
|
|
111
|
-
const sourceId = args['sourceId'] ?? '';
|
|
112
|
-
const target = args['targetPathOrTitle'] ?? '';
|
|
113
|
-
const alias = args['alias'];
|
|
114
|
-
ctx.linkDocuments(sourceId, target, alias);
|
|
115
|
-
return `Linked document ${sourceId} → ${target}${alias ? ` (alias: ${alias})` : ''}.`;
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
name: 'getDocumentBacklinks',
|
|
120
|
-
description: 'Retrieve documents that link to a given document.',
|
|
121
|
-
category: 'vault',
|
|
122
|
-
parameters: [p('id', 'string', 'Target document id', true)],
|
|
123
|
-
execute: (args, ctx) => {
|
|
124
|
-
if (!ctx.getDocumentBacklinks)
|
|
125
|
-
return 'Backlinks not available in this context.';
|
|
126
|
-
const id = args['id'] ?? '';
|
|
127
|
-
const backlinks = ctx.getDocumentBacklinks(id);
|
|
128
|
-
if (backlinks.length === 0)
|
|
129
|
-
return 'No backlinks found.';
|
|
130
|
-
return backlinks.map((d) => `- ${d.title} (${d.path})`).join('\n');
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
];
|
|
134
|
-
//# sourceMappingURL=vaultTools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vaultTools.js","sourceRoot":"","sources":["../../src/agents/vaultTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
function borderColor(toolName, ok) {
|
|
4
|
-
if (ok === false)
|
|
5
|
-
return 'red';
|
|
6
|
-
const lower = toolName.toLowerCase();
|
|
7
|
-
if (lower.includes('read') || lower === 'cat' || lower.includes('grep') || lower.includes('search'))
|
|
8
|
-
return 'green';
|
|
9
|
-
if (lower.includes('write') || lower.includes('edit'))
|
|
10
|
-
return 'yellow';
|
|
11
|
-
if (lower === 'bash' || lower === 'shell' || lower === 'exec')
|
|
12
|
-
return 'red';
|
|
13
|
-
return 'cyan';
|
|
14
|
-
}
|
|
15
|
-
export function CollapsibleToolOutput(props) {
|
|
16
|
-
const { toolName, summary, body, durationMs, ok, defaultExpanded = false } = props;
|
|
17
|
-
const isControlled = typeof props.expanded === 'boolean';
|
|
18
|
-
const [localExpanded, setLocalExpanded] = useState(defaultExpanded);
|
|
19
|
-
const expanded = isControlled ? props.expanded : localExpanded;
|
|
20
|
-
const color = borderColor(toolName, ok);
|
|
21
|
-
const summaryLine = [
|
|
22
|
-
`[${toolName}]`,
|
|
23
|
-
summary,
|
|
24
|
-
durationMs !== undefined ? `(${durationMs}ms)` : '',
|
|
25
|
-
expanded ? '▲' : '▼',
|
|
26
|
-
].filter(Boolean).join(' ');
|
|
27
|
-
return (React.createElement(Box, { flexDirection: "column", marginLeft: 2 },
|
|
28
|
-
React.createElement(Box, null,
|
|
29
|
-
React.createElement(Text, { color: color }, summaryLine)),
|
|
30
|
-
expanded && (React.createElement(Box, { flexDirection: "column", marginLeft: 2, borderStyle: "single", borderColor: color, paddingX: 1 }, body.split('\n').map((line, idx) => (
|
|
31
|
-
// B12 fix — index keys caused "Encountered two children with the
|
|
32
|
-
// same key" warnings when adjacent lines were identical (e.g.
|
|
33
|
-
// empty separators in multi-line tool output). Use line content
|
|
34
|
-
// with an idx fallback for empty lines.
|
|
35
|
-
React.createElement(Text, { key: line || `__blank-${idx}`, dimColor: ok === false }, line)))))));
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Pure helper: classify tool color (exported for unit tests).
|
|
39
|
-
*/
|
|
40
|
-
export function classifyToolColor(toolName, ok) {
|
|
41
|
-
return borderColor(toolName, ok);
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=CollapsibleToolOutput.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleToolOutput.js","sourceRoot":"","sources":["../../../src/cli/components/CollapsibleToolOutput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAqChC,SAAS,WAAW,CAAC,QAAgB,EAAE,EAAY;IACjD,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IACpH,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACnF,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC;IACzD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAE,KAAK,CAAC,QAAoB,CAAC,CAAC,CAAC,aAAa,CAAC;IAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG;QAClB,IAAI,QAAQ,GAAG;QACf,OAAO;QACP,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,CAAC,EAAE;QACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;KACrB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC;QACvC,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAAG,WAAW,CAAQ,CACpC;QACL,QAAQ,IAAI,CACX,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAC5F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACnC,iEAAiE;QACjE,8DAA8D;QAC9D,gEAAgE;QAChE,wCAAwC;QACxC,oBAAC,IAAI,IAAC,GAAG,EAAE,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,KAAK,IAAG,IAAI,CAAQ,CAC3E,CAAC,CACE,CACP,CACG,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,EAAY;IAC9D,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import React, { memo } from 'react';
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import { formatCost, formatTokens } from '../modelPricing.js';
|
|
4
|
-
/**
|
|
5
|
-
* B11 fix — wrapped in React.memo so the header doesn't re-render on every
|
|
6
|
-
* input keystroke or streaming delta. It only re-renders when its props
|
|
7
|
-
* (model, provider, cost, token count, etc.) actually change.
|
|
8
|
-
*/
|
|
9
|
-
function HeaderImpl({ model, provider, skillCount, sessionActive, sessionId, totalTokens, totalCostUsd }) {
|
|
10
|
-
const hasCost = typeof totalCostUsd === 'number' && totalCostUsd > 0;
|
|
11
|
-
const costStr = hasCost ? formatCost(totalCostUsd) : '$0.0000';
|
|
12
|
-
const tokStr = formatTokens(totalTokens ?? 0);
|
|
13
|
-
return (React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "row" },
|
|
14
|
-
React.createElement(Text, { bold: true, color: "cyan" }, "zelari-code"),
|
|
15
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
16
|
-
React.createElement(Text, null, model),
|
|
17
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
18
|
-
React.createElement(Text, null, provider),
|
|
19
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
20
|
-
React.createElement(Text, null,
|
|
21
|
-
skillCount,
|
|
22
|
-
" skills"),
|
|
23
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
24
|
-
React.createElement(Text, { color: sessionActive ? 'green' : 'gray' }, sessionActive ? '● active' : '○ idle'),
|
|
25
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
26
|
-
React.createElement(Text, { dimColor: true },
|
|
27
|
-
"session ",
|
|
28
|
-
sessionId),
|
|
29
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
30
|
-
React.createElement(Text, { color: hasCost ? 'yellow' : 'gray' }, costStr),
|
|
31
|
-
React.createElement(Text, { dimColor: true }, " \u00B7 "),
|
|
32
|
-
React.createElement(Text, { color: "gray" },
|
|
33
|
-
tokStr,
|
|
34
|
-
" tok")));
|
|
35
|
-
}
|
|
36
|
-
/** B11 — memoized export. Shallow equality suffices (all props are primitives). */
|
|
37
|
-
export const Header = memo(HeaderImpl);
|
|
38
|
-
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/cli/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAc9D;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAe;IACnH,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,GAAG,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,CACL,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,KAAK;QAC1E,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,kBAAmB;QAC1C,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,QAAE,KAAK,CAAQ;QACpB,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,QAAE,QAAQ,CAAQ;QACvB,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI;YAAE,UAAU;sBAAe;QAChC,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAC1C,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CACjC;QACP,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,QAAQ;;YAAU,SAAS,CAAQ;QACzC,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAG,OAAO,CAAQ;QAC1D,oBAAC,IAAI,IAAC,QAAQ,qBAAW;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;YAAE,MAAM;mBAAY,CAClC,CACP,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC"}
|