codehere 0.5.0-alpha → 0.5.1-alpha
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/dist/application/agents/execution-agent.js +2 -2
- package/dist/application/services/dependency-container.d.ts.map +1 -1
- package/dist/application/services/dependency-container.js +3 -25
- package/dist/application/services/dependency-container.js.map +1 -1
- package/dist/application/services/intelligent-router.d.ts +5 -11
- package/dist/application/services/intelligent-router.d.ts.map +1 -1
- package/dist/application/services/intelligent-router.js +80 -147
- package/dist/application/services/intelligent-router.js.map +1 -1
- package/dist/application/use-cases/ask-question-use-case.d.ts +0 -1
- package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/ask-question-use-case.js +3 -4
- package/dist/application/use-cases/ask-question-use-case.js.map +1 -1
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +18 -7
- package/dist/chat.js.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/ai/cohere-ai-service.js +1 -1
- package/dist/infrastructure/ai/provider-ai-service.js +1 -1
- package/dist/infrastructure/context/conversation-context.d.ts +11 -10
- package/dist/infrastructure/context/conversation-context.d.ts.map +1 -1
- package/dist/infrastructure/context/conversation-context.js +2 -5
- package/dist/infrastructure/context/conversation-context.js.map +1 -1
- package/dist/infrastructure/index.d.ts +0 -1
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +2 -1
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/infrastructure/providers/cohere-provider.d.ts +2 -1
- package/dist/infrastructure/providers/cohere-provider.d.ts.map +1 -1
- package/dist/infrastructure/providers/cohere-provider.js +37 -13
- package/dist/infrastructure/providers/cohere-provider.js.map +1 -1
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts.map +1 -1
- package/dist/infrastructure/providers/operation-provider-resolver.js +7 -33
- package/dist/infrastructure/providers/operation-provider-resolver.js.map +1 -1
- package/dist/infrastructure/security/network-guard.d.ts +8 -0
- package/dist/infrastructure/security/network-guard.d.ts.map +1 -0
- package/dist/infrastructure/security/network-guard.js +70 -0
- package/dist/infrastructure/security/network-guard.js.map +1 -0
- package/dist/infrastructure/security/offline.d.ts +16 -0
- package/dist/infrastructure/security/offline.d.ts.map +1 -0
- package/dist/infrastructure/security/offline.js +24 -0
- package/dist/infrastructure/security/offline.js.map +1 -0
- package/dist/infrastructure/storage/memory-stream-service.d.ts.map +1 -1
- package/dist/infrastructure/storage/memory-stream-service.js +88 -58
- package/dist/infrastructure/storage/memory-stream-service.js.map +1 -1
- package/dist/infrastructure/storage/sqljs-init.d.ts +8 -0
- package/dist/infrastructure/storage/sqljs-init.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqljs-init.js +23 -0
- package/dist/infrastructure/storage/sqljs-init.js.map +1 -0
- package/dist/infrastructure/ux/meta-query.d.ts +9 -0
- package/dist/infrastructure/ux/meta-query.d.ts.map +1 -0
- package/dist/infrastructure/ux/meta-query.js +63 -0
- package/dist/infrastructure/ux/meta-query.js.map +1 -0
- package/dist/infrastructure/ux/progress-indicator.d.ts +10 -49
- package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -1
- package/dist/infrastructure/ux/progress-indicator.js +9 -112
- package/dist/infrastructure/ux/progress-indicator.js.map +1 -1
- package/dist/infrastructure/ux/repo-fingerprint.d.ts +10 -0
- package/dist/infrastructure/ux/repo-fingerprint.d.ts.map +1 -0
- package/dist/infrastructure/ux/repo-fingerprint.js +55 -0
- package/dist/infrastructure/ux/repo-fingerprint.js.map +1 -0
- package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/ask-command.js +56 -77
- package/dist/presentation/cli/commands/ask-command.js.map +1 -1
- package/dist/presentation/cli/commands/fix-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/fix-command.js +1 -23
- package/dist/presentation/cli/commands/fix-command.js.map +1 -1
- package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/smart-command.js +0 -1
- package/dist/presentation/cli/commands/smart-command.js.map +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +18 -5
- package/dist/search.js.map +1 -1
- package/dist/session.d.ts +0 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +5 -11
- package/dist/session.js.map +1 -1
- package/dist/tools/bash.d 2.ts +53 -0
- package/dist/tools/bash.js 2.map +1 -0
- package/dist/tools/edit 2.js +235 -0
- package/dist/tools/edit.d.ts 2.map +1 -0
- package/package.json +4 -3
|
@@ -18,72 +18,88 @@ export class MemoryStreamService {
|
|
|
18
18
|
* Store observation
|
|
19
19
|
*/
|
|
20
20
|
async recordObservation(description, metadata, codebaseId, codebasePath) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
21
|
+
try {
|
|
22
|
+
const embedding = await this.aiService.embed(description);
|
|
23
|
+
if (Array.isArray(embedding[0])) {
|
|
24
|
+
throw new Error('Expected single embedding');
|
|
25
|
+
}
|
|
26
|
+
const memory = {
|
|
27
|
+
type: 'observation',
|
|
28
|
+
description,
|
|
29
|
+
embedding: embedding,
|
|
30
|
+
timestamp: new Date(),
|
|
31
|
+
importance: this.calculateImportance(description),
|
|
32
|
+
lastAccessed: new Date(),
|
|
33
|
+
metadata: {
|
|
34
|
+
...metadata,
|
|
35
|
+
...(codebaseId && { codebaseId }),
|
|
36
|
+
...(codebasePath && { codebasePath }),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
await this.repository.store(memory);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
// Best-effort: skip memory storage if embedding fails (non-critical)
|
|
43
|
+
// Don't throw - memory is optional
|
|
44
|
+
}
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
41
47
|
* Store reflection
|
|
42
48
|
*/
|
|
43
49
|
async recordReflection(description, trajectory, reward, errors, codebaseId, codebasePath) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
50
|
+
try {
|
|
51
|
+
const embedding = await this.aiService.embed(description);
|
|
52
|
+
if (Array.isArray(embedding[0])) {
|
|
53
|
+
throw new Error('Expected single embedding');
|
|
54
|
+
}
|
|
55
|
+
const memory = {
|
|
56
|
+
type: 'reflection',
|
|
57
|
+
description,
|
|
58
|
+
embedding: embedding,
|
|
59
|
+
timestamp: new Date(),
|
|
60
|
+
importance: 8, // Reflections are high importance
|
|
61
|
+
lastAccessed: new Date(),
|
|
62
|
+
metadata: {
|
|
63
|
+
trajectory,
|
|
64
|
+
reward,
|
|
65
|
+
errors,
|
|
66
|
+
...(codebaseId && { codebaseId }),
|
|
67
|
+
...(codebasePath && { codebasePath }),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
await this.repository.store(memory);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
// Best-effort: skip memory storage if embedding fails (non-critical)
|
|
74
|
+
}
|
|
64
75
|
}
|
|
65
76
|
/**
|
|
66
77
|
* Store plan
|
|
67
78
|
*/
|
|
68
79
|
async recordPlan(description, plan, codebaseId, codebasePath) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
try {
|
|
81
|
+
const embedding = await this.aiService.embed(description);
|
|
82
|
+
if (Array.isArray(embedding[0])) {
|
|
83
|
+
throw new Error('Expected single embedding');
|
|
84
|
+
}
|
|
85
|
+
const memory = {
|
|
86
|
+
type: 'plan',
|
|
87
|
+
description,
|
|
88
|
+
embedding: embedding,
|
|
89
|
+
timestamp: new Date(),
|
|
90
|
+
importance: 7,
|
|
91
|
+
lastAccessed: new Date(),
|
|
92
|
+
metadata: {
|
|
93
|
+
plan,
|
|
94
|
+
...(codebaseId && { codebaseId }),
|
|
95
|
+
...(codebasePath && { codebasePath }),
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
await this.repository.store(memory);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// Best-effort: skip memory storage if embedding fails (non-critical)
|
|
102
|
+
}
|
|
87
103
|
}
|
|
88
104
|
/**
|
|
89
105
|
* Retrieve relevant memories with optional reranking
|
|
@@ -91,7 +107,14 @@ export class MemoryStreamService {
|
|
|
91
107
|
* Performance: Uses embedding cache to avoid redundant API calls
|
|
92
108
|
*/
|
|
93
109
|
async retrieve(query, limit = 10, useRerank = true) {
|
|
94
|
-
|
|
110
|
+
let allMemories;
|
|
111
|
+
try {
|
|
112
|
+
allMemories = await this.repository.getAll();
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
// Best-effort: return empty if repository access fails
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
95
118
|
if (allMemories.length === 0) {
|
|
96
119
|
return [];
|
|
97
120
|
}
|
|
@@ -136,7 +159,14 @@ export class MemoryStreamService {
|
|
|
136
159
|
*/
|
|
137
160
|
async retrieveByCodebase(query, codebaseId, limit = 10, useRerank = true) {
|
|
138
161
|
// Get all memories for this codebase first
|
|
139
|
-
|
|
162
|
+
let codebaseMemories;
|
|
163
|
+
try {
|
|
164
|
+
codebaseMemories = await this.repository.getAllByCodebase(codebaseId);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
// Best-effort: return empty if repository access fails
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
140
170
|
if (codebaseMemories.length === 0) {
|
|
141
171
|
return [];
|
|
142
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-stream-service.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/memory-stream-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,OAAO,mBAAmB;IACtB,UAAU,CAAyB;IACnC,SAAS,CAAkB;IAC3B,SAAS,CAAa;IACtB,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE7C,YAAY,UAAkC,EAAE,SAAqB;QACnE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC,uCAAuC;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EAAE,QAAc,EAAE,UAAmB,EAAE,YAAqB;QACrG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-stream-service.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/memory-stream-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqljs-init.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/sqljs-init.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE;QACR,KAAK,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;KACnC,CAAC;CACH,CAAC;AAEF,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAkC9D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sql.js initialization helper
|
|
3
|
+
* Ensures the wasm file can be located reliably in Node (especially in non-TTY / spawned processes).
|
|
4
|
+
*
|
|
5
|
+
* NOTE: sql.js requires locateFile in some environments to avoid hanging while resolving sql-wasm.wasm.
|
|
6
|
+
*/
|
|
7
|
+
import initSqlJs from 'sql.js';
|
|
8
|
+
import { createRequire } from 'module';
|
|
9
|
+
export async function initSqlJsSafe() {
|
|
10
|
+
try {
|
|
11
|
+
const require = createRequire(import.meta.url);
|
|
12
|
+
const wasmPath = require.resolve('sql.js/dist/sql-wasm.wasm');
|
|
13
|
+
return (await initSqlJs({
|
|
14
|
+
locateFile: (file) => (file.endsWith('.wasm') ? wasmPath : file),
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Fallback: let sql.js try its default resolution strategy.
|
|
19
|
+
// If that fails in the current environment, callers should surface the error quickly.
|
|
20
|
+
return (await initSqlJs());
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sqljs-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqljs-init.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/sqljs-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AASvC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QACvD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,WAAW,GAAG,KAAK,EAAK,CAAa,EAAE,EAAU,EAAc,EAAE;QACrE,IAAI,CAAC,GAA0B,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC3C,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC;YAClC,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;SACzE,CAAC,EAAE,SAAS,CAAC,CAA+B,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,sFAAsF;QACtF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,WAAW,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,CAA+B,CAAC;IACnF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type MetaQueryResult = {
|
|
2
|
+
handled: false;
|
|
3
|
+
} | {
|
|
4
|
+
handled: true;
|
|
5
|
+
kind: 'capabilities' | 'project' | 'goto';
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function handleMetaQuery(query: string, cwd: string): MetaQueryResult;
|
|
9
|
+
//# sourceMappingURL=meta-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-query.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ux/meta-query.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CAyD3E"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UX: Meta-query handler (deterministic, no LLM)
|
|
3
|
+
* Used to keep UX professional for "what can I do" / "what project is this" / "go to <path>".
|
|
4
|
+
*/
|
|
5
|
+
import { fingerprintRepo } from './repo-fingerprint.js';
|
|
6
|
+
import { isOfflineModeEnabled } from '../security/offline.js';
|
|
7
|
+
export function handleMetaQuery(query, cwd) {
|
|
8
|
+
const trimmed = query.trim();
|
|
9
|
+
const lower = trimmed.toLowerCase();
|
|
10
|
+
const normalized = lower.replace(/[?!.\u2026]+$/g, '').trim();
|
|
11
|
+
if (normalized === 'what can i do' || normalized === 'what i can do' || normalized === 'capabilities') {
|
|
12
|
+
const offlineNote = isOfflineModeEnabled()
|
|
13
|
+
? 'Offline: ON (no outbound network).'
|
|
14
|
+
: 'Offline: use `--offline` or CODEHERE_OFFLINE=1 to block outbound network (localhost allowed).';
|
|
15
|
+
return {
|
|
16
|
+
handled: true,
|
|
17
|
+
kind: 'capabilities',
|
|
18
|
+
message: [
|
|
19
|
+
'Commands you can run:',
|
|
20
|
+
'- codehere ask "..." --json',
|
|
21
|
+
'- codehere explain <file>',
|
|
22
|
+
'- codehere plan "..." --json',
|
|
23
|
+
'- codehere fix <file> "..." --review',
|
|
24
|
+
'- codehere orchestrate "..." --json',
|
|
25
|
+
'- codehere memory --list --json',
|
|
26
|
+
'- codehere trace export <runId> --json',
|
|
27
|
+
'',
|
|
28
|
+
'Tips:',
|
|
29
|
+
`- Current directory: ${cwd}`,
|
|
30
|
+
'- To work on another repo: `cd /path/to/repo` in your shell, then re-run.',
|
|
31
|
+
`- ${offlineNote}`,
|
|
32
|
+
].join('\n'),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (normalized === 'what project is this' || normalized === 'what is this project' || normalized === 'project') {
|
|
36
|
+
const fp = fingerprintRepo(cwd);
|
|
37
|
+
const lines = [
|
|
38
|
+
'Project fingerprint:',
|
|
39
|
+
`- directory: ${fp.cwd}`,
|
|
40
|
+
`- type: ${fp.kind}`,
|
|
41
|
+
];
|
|
42
|
+
if (fp.name)
|
|
43
|
+
lines.push(`- name: ${fp.name}`);
|
|
44
|
+
if (fp.description)
|
|
45
|
+
lines.push(`- description: ${fp.description}`);
|
|
46
|
+
if (fp.packageManager)
|
|
47
|
+
lines.push(`- package manager: ${fp.packageManager}`);
|
|
48
|
+
if (fp.scripts && fp.scripts.length > 0)
|
|
49
|
+
lines.push(`- scripts: ${fp.scripts.slice(0, 12).join(', ')}${fp.scripts.length > 12 ? ', ...' : ''}`);
|
|
50
|
+
return { handled: true, kind: 'project', message: lines.join('\n') };
|
|
51
|
+
}
|
|
52
|
+
const goToMatch = trimmed.match(/\b(go to|switch to|cd to)\s+(\S+)/i);
|
|
53
|
+
if (goToMatch) {
|
|
54
|
+
const target = goToMatch[2];
|
|
55
|
+
return {
|
|
56
|
+
handled: true,
|
|
57
|
+
kind: 'goto',
|
|
58
|
+
message: `I can’t change your shell’s working directory. Run this in your terminal:\n\ncd ${target}\n\nThen run:\ncodehere ask \"what project is this\" --json`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return { handled: false };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=meta-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-query.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/meta-query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,GAAW;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9D,IAAI,UAAU,KAAK,eAAe,IAAI,UAAU,KAAK,eAAe,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QACtG,MAAM,WAAW,GAAG,oBAAoB,EAAE;YACxC,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,+FAA+F,CAAC;QAEpG,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,cAAc;YACpB,OAAO,EACL;gBACE,uBAAuB;gBACvB,6BAA6B;gBAC7B,2BAA2B;gBAC3B,8BAA8B;gBAC9B,sCAAsC;gBACtC,qCAAqC;gBACrC,iCAAiC;gBACjC,wCAAwC;gBACxC,EAAE;gBACF,OAAO;gBACP,wBAAwB,GAAG,EAAE;gBAC7B,2EAA2E;gBAC3E,KAAK,WAAW,EAAE;aACnB,CAAC,IAAI,CAAC,IAAI,CAAC;SACf,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,sBAAsB,IAAI,UAAU,KAAK,sBAAsB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/G,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,KAAK,GAAa;YACtB,sBAAsB;YACtB,gBAAgB,EAAE,CAAC,GAAG,EAAE;YACxB,WAAW,EAAE,CAAC,IAAI,EAAE;SACrB,CAAC;QACF,IAAI,EAAE,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,cAAc;YAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7E,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChJ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACtE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,mFAAmF,MAAM,6DAA6D;SAChK,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -1,53 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
export interface ProgressOptions {
|
|
8
|
-
total?: number;
|
|
9
|
-
message?: string;
|
|
10
|
-
showPercentage?: boolean;
|
|
11
|
-
showCount?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare class ProgressIndicator {
|
|
14
|
-
private spinner;
|
|
15
|
-
private progressBar;
|
|
16
|
-
private operationStartTime;
|
|
17
|
-
private currentValue;
|
|
18
|
-
private total;
|
|
19
|
-
private message;
|
|
20
|
-
/**
|
|
21
|
-
* Start progress indicator
|
|
22
|
-
*/
|
|
23
|
-
start(options?: ProgressOptions): void;
|
|
24
|
-
/**
|
|
25
|
-
* Update progress
|
|
26
|
-
*/
|
|
27
|
-
update(value: number, message?: string): void;
|
|
28
|
-
/**
|
|
29
|
-
* Increment progress
|
|
30
|
-
*/
|
|
31
|
-
increment(delta?: number, message?: string): void;
|
|
32
|
-
/**
|
|
33
|
-
* Stop progress indicator with smooth transition
|
|
34
|
-
*/
|
|
35
|
-
stop(success?: boolean, finalMessage?: string, suppressMessage?: boolean): void;
|
|
36
|
-
/**
|
|
37
|
-
* Get elapsed time
|
|
38
|
-
*/
|
|
39
|
-
getElapsedTime(): number;
|
|
1
|
+
export interface ProgressHandle {
|
|
2
|
+
start: (opts?: {
|
|
3
|
+
message?: string;
|
|
4
|
+
}) => void;
|
|
5
|
+
stop: (success?: boolean, finalMessage?: string) => void;
|
|
40
6
|
}
|
|
41
7
|
/**
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
* Create progress indicator for plan generation
|
|
47
|
-
*/
|
|
48
|
-
export declare function createPlanGenerationProgress(): ProgressIndicator;
|
|
49
|
-
/**
|
|
50
|
-
* Create progress indicator for memory synthesis
|
|
8
|
+
* Lightweight progress indicator for embedding search.
|
|
9
|
+
*
|
|
10
|
+
* This is intentionally a **no-op** implementation to avoid adding dependencies
|
|
11
|
+
* or noisy console output in non-interactive/test environments.
|
|
51
12
|
*/
|
|
52
|
-
export declare function
|
|
13
|
+
export declare function createEmbeddingSearchProgress(_estimatedTotalChunks: number): ProgressHandle;
|
|
53
14
|
//# sourceMappingURL=progress-indicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-indicator.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ux/progress-indicator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"progress-indicator.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ux/progress-indicator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,MAAM,GAAG,cAAc,CAK3F"}
|
|
@@ -1,116 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Provides progress indicators for long-running operations
|
|
2
|
+
* Lightweight progress indicator for embedding search.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
total = 0;
|
|
14
|
-
message = '';
|
|
15
|
-
/**
|
|
16
|
-
* Start progress indicator
|
|
17
|
-
*/
|
|
18
|
-
start(options = {}) {
|
|
19
|
-
this.operationStartTime = Date.now();
|
|
20
|
-
this.currentValue = 0;
|
|
21
|
-
this.total = options.total || 0;
|
|
22
|
-
this.message = options.message || 'Processing...';
|
|
23
|
-
if (this.total > 0) {
|
|
24
|
-
// Progress bar mode
|
|
25
|
-
this.update(0, this.message);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
// Spinner mode
|
|
29
|
-
this.spinner = createSpinner(this.message);
|
|
30
|
-
this.spinner.start();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Update progress
|
|
35
|
-
*/
|
|
36
|
-
update(value, message) {
|
|
37
|
-
this.currentValue = value;
|
|
38
|
-
if (message) {
|
|
39
|
-
this.message = message;
|
|
40
|
-
}
|
|
41
|
-
if (this.total > 0) {
|
|
42
|
-
// Progress bar
|
|
43
|
-
const percentage = Math.min(100, Math.floor((value / this.total) * 100));
|
|
44
|
-
const barLength = 20;
|
|
45
|
-
const filled = Math.floor((percentage / 100) * barLength);
|
|
46
|
-
const bar = '█'.repeat(filled) + '░'.repeat(barLength - filled);
|
|
47
|
-
process.stdout.write(`\r${this.message} [${bar}] ${percentage}% (${value}/${this.total})`);
|
|
48
|
-
}
|
|
49
|
-
else if (this.spinner) {
|
|
50
|
-
// Spinner
|
|
51
|
-
this.spinner.text = this.message;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Increment progress
|
|
56
|
-
*/
|
|
57
|
-
increment(delta = 1, message) {
|
|
58
|
-
this.update(this.currentValue + delta, message);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Stop progress indicator with smooth transition
|
|
62
|
-
*/
|
|
63
|
-
stop(success = true, finalMessage, suppressMessage = false) {
|
|
64
|
-
if (this.spinner) {
|
|
65
|
-
this.spinner.stop();
|
|
66
|
-
this.spinner = null;
|
|
67
|
-
}
|
|
68
|
-
else if (this.total > 0) {
|
|
69
|
-
// Clear progress bar
|
|
70
|
-
process.stdout.write('\r' + ' '.repeat(80) + '\r');
|
|
71
|
-
}
|
|
72
|
-
if (finalMessage && !suppressMessage) {
|
|
73
|
-
console.log(finalMessage);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Get elapsed time
|
|
78
|
-
*/
|
|
79
|
-
getElapsedTime() {
|
|
80
|
-
return Date.now() - this.operationStartTime;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Create progress indicator for embedding search
|
|
85
|
-
*/
|
|
86
|
-
export function createEmbeddingSearchProgress(total) {
|
|
87
|
-
const indicator = new ProgressIndicator();
|
|
88
|
-
indicator.start({
|
|
89
|
-
total,
|
|
90
|
-
message: 'Searching embeddings',
|
|
91
|
-
showPercentage: true,
|
|
92
|
-
showCount: true,
|
|
93
|
-
});
|
|
94
|
-
return indicator;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Create progress indicator for plan generation
|
|
98
|
-
*/
|
|
99
|
-
export function createPlanGenerationProgress() {
|
|
100
|
-
const indicator = new ProgressIndicator();
|
|
101
|
-
indicator.start({
|
|
102
|
-
message: 'Generating plan',
|
|
103
|
-
});
|
|
104
|
-
return indicator;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Create progress indicator for memory synthesis
|
|
108
|
-
*/
|
|
109
|
-
export function createMemorySynthesisProgress() {
|
|
110
|
-
const indicator = new ProgressIndicator();
|
|
111
|
-
indicator.start({
|
|
112
|
-
message: 'Synthesizing memories',
|
|
113
|
-
});
|
|
114
|
-
return indicator;
|
|
4
|
+
* This is intentionally a **no-op** implementation to avoid adding dependencies
|
|
5
|
+
* or noisy console output in non-interactive/test environments.
|
|
6
|
+
*/
|
|
7
|
+
export function createEmbeddingSearchProgress(_estimatedTotalChunks) {
|
|
8
|
+
return {
|
|
9
|
+
start: () => { },
|
|
10
|
+
stop: () => { },
|
|
11
|
+
};
|
|
115
12
|
}
|
|
116
13
|
//# sourceMappingURL=progress-indicator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-indicator.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/progress-indicator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"progress-indicator.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/progress-indicator.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,qBAA6B;IACzE,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type RepoFingerprint = {
|
|
2
|
+
cwd: string;
|
|
3
|
+
kind: 'node' | 'python' | 'go' | 'rust' | 'unknown';
|
|
4
|
+
name?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
packageManager?: 'npm' | 'pnpm' | 'yarn';
|
|
7
|
+
scripts?: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare function fingerprintRepo(cwd: string): RepoFingerprint;
|
|
10
|
+
//# sourceMappingURL=repo-fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-fingerprint.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ux/repo-fingerprint.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAUF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CA0C5D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UX: Repo Fingerprint (deterministic, no LLM)
|
|
3
|
+
* Produces a quick, reliable summary of the current directory/repo.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync, readdirSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
function safeReadJson(path) {
|
|
8
|
+
try {
|
|
9
|
+
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function fingerprintRepo(cwd) {
|
|
16
|
+
const pkgPath = join(cwd, 'package.json');
|
|
17
|
+
const pnpmLock = join(cwd, 'pnpm-lock.yaml');
|
|
18
|
+
const yarnLock = join(cwd, 'yarn.lock');
|
|
19
|
+
const npmLock = join(cwd, 'package-lock.json');
|
|
20
|
+
if (existsSync(pkgPath)) {
|
|
21
|
+
const pkg = safeReadJson(pkgPath) || {};
|
|
22
|
+
const scripts = pkg.scripts && typeof pkg.scripts === 'object'
|
|
23
|
+
? Object.keys(pkg.scripts).sort()
|
|
24
|
+
: [];
|
|
25
|
+
const packageManager = existsSync(pnpmLock) ? 'pnpm' : existsSync(yarnLock) ? 'yarn' : existsSync(npmLock) ? 'npm' : 'npm';
|
|
26
|
+
return {
|
|
27
|
+
cwd,
|
|
28
|
+
kind: 'node',
|
|
29
|
+
name: typeof pkg.name === 'string' ? pkg.name : undefined,
|
|
30
|
+
description: typeof pkg.description === 'string' ? pkg.description : undefined,
|
|
31
|
+
packageManager,
|
|
32
|
+
scripts,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (existsSync(join(cwd, 'pyproject.toml')) || existsSync(join(cwd, 'requirements.txt'))) {
|
|
36
|
+
return { cwd, kind: 'python' };
|
|
37
|
+
}
|
|
38
|
+
if (existsSync(join(cwd, 'go.mod'))) {
|
|
39
|
+
return { cwd, kind: 'go' };
|
|
40
|
+
}
|
|
41
|
+
if (existsSync(join(cwd, 'Cargo.toml'))) {
|
|
42
|
+
return { cwd, kind: 'rust' };
|
|
43
|
+
}
|
|
44
|
+
// Lightweight heuristic: if directory is empty-ish, call it unknown
|
|
45
|
+
try {
|
|
46
|
+
const entries = readdirSync(cwd);
|
|
47
|
+
if (entries.length === 0)
|
|
48
|
+
return { cwd, kind: 'unknown' };
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// ignore
|
|
52
|
+
}
|
|
53
|
+
return { cwd, kind: 'unknown' };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=repo-fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-fingerprint.js","sourceRoot":"","sources":["../../../src/infrastructure/ux/repo-fingerprint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAW5B,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAE/C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAC5D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;YACjC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAClB,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACtG,OAAO;YACL,GAAG;YACH,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACzD,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC9E,cAAc;YACd,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-command.d.ts","sourceRoot":"","sources":["../../../../src/presentation/cli/commands/ask-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ask-command.d.ts","sourceRoot":"","sources":["../../../../src/presentation/cli/commands/ask-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8c1I"}
|