@orbitpanel/cli 1.9.0 → 1.11.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/dist/lib/ai-chat.js +2 -0
- package/dist/lib/ai-chat.js.map +1 -1
- package/dist/lib/ai-stream.js +2 -0
- package/dist/lib/ai-stream.js.map +1 -1
- package/dist/lib/command-router.js +21 -0
- package/dist/lib/command-router.js.map +1 -1
- package/dist/lib/intelligence/action-executor.d.ts +45 -0
- package/dist/lib/intelligence/action-executor.js +77 -0
- package/dist/lib/intelligence/action-executor.js.map +1 -0
- package/dist/lib/intelligence/action-parser.d.ts +63 -0
- package/dist/lib/intelligence/action-parser.js +149 -0
- package/dist/lib/intelligence/action-parser.js.map +1 -0
- package/dist/lib/intelligence/agent-prompt.d.ts +28 -0
- package/dist/lib/intelligence/agent-prompt.js +179 -0
- package/dist/lib/intelligence/agent-prompt.js.map +1 -0
- package/dist/lib/intelligence/capability-map.d.ts +53 -0
- package/dist/lib/intelligence/capability-map.js +266 -0
- package/dist/lib/intelligence/capability-map.js.map +1 -0
- package/dist/lib/intelligence/chat-enrichment.d.ts +32 -0
- package/dist/lib/intelligence/chat-enrichment.js +130 -0
- package/dist/lib/intelligence/chat-enrichment.js.map +1 -0
- package/dist/lib/intelligence/context-packet.d.ts +157 -0
- package/dist/lib/intelligence/context-packet.js +129 -0
- package/dist/lib/intelligence/context-packet.js.map +1 -0
- package/dist/lib/intelligence/diagnose-wiring.d.ts +20 -0
- package/dist/lib/intelligence/diagnose-wiring.js +157 -0
- package/dist/lib/intelligence/diagnose-wiring.js.map +1 -0
- package/dist/lib/intelligence/diagnose.d.ts +116 -0
- package/dist/lib/intelligence/diagnose.js +312 -0
- package/dist/lib/intelligence/diagnose.js.map +1 -0
- package/dist/lib/intelligence/model-config.d.ts +18 -0
- package/dist/lib/intelligence/model-config.js +27 -0
- package/dist/lib/intelligence/model-config.js.map +1 -0
- package/dist/lib/shell-ink.js +23 -1
- package/dist/lib/shell-ink.js.map +1 -1
- package/dist/lib/shell-render.js +1 -0
- package/dist/lib/shell-render.js.map +1 -1
- package/dist/lib/shell.js +62 -3
- package/dist/lib/shell.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Agent Prompt — System prompt per il CLI Intelligence Layer.
|
|
3
|
+
*
|
|
4
|
+
* Questo prompt viene inviato al modello LLM insieme al Context Packet.
|
|
5
|
+
* È tecnico, disciplinato e operativo — non marketing.
|
|
6
|
+
*
|
|
7
|
+
* TONO: assistente di bordo di un aereo, non chatbot.
|
|
8
|
+
* Conciso, pratico, diretto. Parla italiano.
|
|
9
|
+
*/
|
|
10
|
+
import { getAvailableCapabilities } from './capability-map.js';
|
|
11
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
12
|
+
// SYSTEM PROMPT TEMPLATE
|
|
13
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
14
|
+
const IDENTITY = `Sei il copilota operativo della CLI di OrbitPanel.
|
|
15
|
+
OrbitPanel è una piattaforma di gestione hosting (WordPress, PrestaShop, cPanel).
|
|
16
|
+
La CLI (@orbitpanel/cli) è uno strumento locale per tracciare sessioni di lavoro, annotare decisioni, e inviare report a Orbit.
|
|
17
|
+
|
|
18
|
+
NON sei l'agente web di Orbit. NON sei il backend. Sei il copilota locale.`;
|
|
19
|
+
const KNOWLEDGE_BOUNDARIES = `CONFINI DI CONOSCENZA:
|
|
20
|
+
- STATO LOCALE: lo conosci dal Context Packet allegato. È la verità.
|
|
21
|
+
- CONOSCENZA ORBIT: sai cos'è Orbit, come funziona la CLI, quali comandi ci sono.
|
|
22
|
+
- STATO BACKEND: NON lo conosci. Non inventare dati su interventi, siti, o memoria remota.
|
|
23
|
+
- Se il Context Packet non contiene un dato, rispondi "non ho questa informazione nel contesto locale".`;
|
|
24
|
+
const PRIMARY_TASKS = `COMPITI PRINCIPALI:
|
|
25
|
+
1. SPIEGARE: cos'è Orbit, come funziona la CLI, cosa significano gli stati
|
|
26
|
+
2. ORIENTARE: guidare l'utente nel workflow (auth → link → session → work → report)
|
|
27
|
+
3. DIAGNOSTICARE: leggere lo stato e identificare problemi
|
|
28
|
+
4. TRASFORMARE: problemi in task, osservazioni in note, scelte in decisioni
|
|
29
|
+
5. SUGGERIRE: il comando giusto al momento giusto
|
|
30
|
+
6. AGIRE: solo azioni consentite dalla capability map`;
|
|
31
|
+
const BEHAVIORAL_RULES = `REGOLE DI COMPORTAMENTO:
|
|
32
|
+
- MAI inventare stato che non è nel Context Packet
|
|
33
|
+
- MAI bypassare conferme su azioni sensibili (report, diagnostiche remote)
|
|
34
|
+
- MAI trattare la sessione locale come memoria backend
|
|
35
|
+
- MAI suggerire azioni remote ad alto rischio come default
|
|
36
|
+
- MAI dire "dovresti aggiornare la memoria" — la CLI non scrive nella memoria backend
|
|
37
|
+
- Quando suggerisci un comando, scrivi il comando esatto (es: /task add "Fixare CSS header")
|
|
38
|
+
- Quando proponi più opzioni, numerale
|
|
39
|
+
- Sii conciso: max 3-4 frasi per risposta, a meno che non sia una spiegazione richiesta
|
|
40
|
+
- Parla italiano
|
|
41
|
+
- Non usare emoji`;
|
|
42
|
+
const STRUCTURED_ACTIONS = `AZIONI STRUTTURATE:
|
|
43
|
+
Quando ritieni utile proporre un'azione locale (nota, task, decisione, completamento task),
|
|
44
|
+
aggiungi un blocco alla fine della tua risposta con questo formato esatto:
|
|
45
|
+
|
|
46
|
+
<orbit-action>
|
|
47
|
+
{"action":"create_task","params":{"text":"Descrizione del task"}}
|
|
48
|
+
</orbit-action>
|
|
49
|
+
|
|
50
|
+
Azioni disponibili:
|
|
51
|
+
- create_note: {"action":"create_note","params":{"text":"testo della nota"}}
|
|
52
|
+
- create_task: {"action":"create_task","params":{"text":"testo del task"}}
|
|
53
|
+
- create_decision: {"action":"create_decision","params":{"text":"testo della decisione"}}
|
|
54
|
+
- complete_task: {"action":"complete_task","params":{"taskId":"id del task"}}
|
|
55
|
+
- suggest_command: {"action":"suggest_command","params":{"command":"/comando"}}
|
|
56
|
+
- none: {"action":"none","params":{}}
|
|
57
|
+
|
|
58
|
+
REGOLE sulle azioni:
|
|
59
|
+
- Includi il blocco SOLO se l'azione e chiaramente utile e richiesta dall'utente
|
|
60
|
+
- NON includere il blocco per semplici spiegazioni o risposte informative
|
|
61
|
+
- L'utente vedra una richiesta di conferma prima dell'esecuzione
|
|
62
|
+
- Scrivi PRIMA il testo di risposta, POI il blocco azione alla fine
|
|
63
|
+
- Se non serve un'azione, NON includere il blocco`;
|
|
64
|
+
const TONE = `TONO:
|
|
65
|
+
Sei un assistente di bordo. Diretto, pratico, informato.
|
|
66
|
+
Non sei un chatbot allegro. Non sei un consulente che spiega troppo.
|
|
67
|
+
Rispondi come un collega esperto che ha il cruscotto davanti.
|
|
68
|
+
Frasi brevi. Informazione utile. Azione chiara.`;
|
|
69
|
+
/**
|
|
70
|
+
* Costruisce il system prompt per il CLI Intelligence Layer.
|
|
71
|
+
* Pure function — nessun side effect.
|
|
72
|
+
*/
|
|
73
|
+
export function buildAgentSystemPrompt(input) {
|
|
74
|
+
const { contextPacket, phase } = input;
|
|
75
|
+
const capabilities = getAvailableCapabilities(contextPacket.capabilities.capabilityLevel, phase);
|
|
76
|
+
const capabilitySection = formatCapabilitySection(capabilities);
|
|
77
|
+
const contextSection = formatContextSection(contextPacket);
|
|
78
|
+
return [
|
|
79
|
+
IDENTITY,
|
|
80
|
+
'',
|
|
81
|
+
KNOWLEDGE_BOUNDARIES,
|
|
82
|
+
'',
|
|
83
|
+
PRIMARY_TASKS,
|
|
84
|
+
'',
|
|
85
|
+
capabilitySection,
|
|
86
|
+
'',
|
|
87
|
+
BEHAVIORAL_RULES,
|
|
88
|
+
'',
|
|
89
|
+
phase >= 2 ? STRUCTURED_ACTIONS : '',
|
|
90
|
+
phase >= 2 ? '' : '',
|
|
91
|
+
TONE,
|
|
92
|
+
'',
|
|
93
|
+
'━━━ CONTESTO CORRENTE ━━━',
|
|
94
|
+
contextSection,
|
|
95
|
+
].join('\n');
|
|
96
|
+
}
|
|
97
|
+
/** Formatta la sezione capabilities per il prompt */
|
|
98
|
+
function formatCapabilitySection(capabilities) {
|
|
99
|
+
const byTier = {};
|
|
100
|
+
for (const cap of capabilities) {
|
|
101
|
+
if (!byTier[cap.tier])
|
|
102
|
+
byTier[cap.tier] = [];
|
|
103
|
+
const confirm = cap.requiresConfirmation ? ' [richiede conferma]' : '';
|
|
104
|
+
const scope = cap.scope === 'local_only' ? '' : ` [${cap.scope}]`;
|
|
105
|
+
byTier[cap.tier].push(`- ${cap.description}${scope}${confirm}`);
|
|
106
|
+
}
|
|
107
|
+
const sections = ['CAPABILITY ATTIVE:'];
|
|
108
|
+
const tierLabels = {
|
|
109
|
+
explain: 'EXPLAIN (spiegare)',
|
|
110
|
+
inspect: 'INSPECT (leggere)',
|
|
111
|
+
suggest: 'SUGGEST (suggerire)',
|
|
112
|
+
act: 'ACT (agire)',
|
|
113
|
+
};
|
|
114
|
+
for (const [tier, label] of Object.entries(tierLabels)) {
|
|
115
|
+
if (byTier[tier]?.length) {
|
|
116
|
+
sections.push(`\n${label}:`);
|
|
117
|
+
sections.push(...byTier[tier]);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
sections.push('\nNON PUOI:');
|
|
121
|
+
sections.push('- Scrivere nella memoria backend di Orbit');
|
|
122
|
+
sections.push('- Eseguire tool MCP multi-step autonomamente');
|
|
123
|
+
sections.push('- Inviare report senza conferma utente');
|
|
124
|
+
sections.push('- Modificare file di progetto silenziosamente');
|
|
125
|
+
return sections.join('\n');
|
|
126
|
+
}
|
|
127
|
+
/** Formatta il Context Packet come sezione leggibile nel prompt */
|
|
128
|
+
function formatContextSection(packet) {
|
|
129
|
+
const lines = [];
|
|
130
|
+
// Project
|
|
131
|
+
const p = packet.project;
|
|
132
|
+
lines.push(`Progetto: ${p.name ?? '(non configurato)'} | ${p.platform ?? '?'} | ${p.environment ?? '?'}`);
|
|
133
|
+
lines.push(`Setup: ${p.setupLevel} | Salute: ${p.healthLevel}`);
|
|
134
|
+
if (p.healthIssues.length > 0) {
|
|
135
|
+
lines.push(`Problemi: ${p.healthIssues.join('; ')}`);
|
|
136
|
+
}
|
|
137
|
+
lines.push(`Prossimo passo: ${p.nextStep.cmd} — ${p.nextStep.reason}`);
|
|
138
|
+
// Session
|
|
139
|
+
const s = packet.session;
|
|
140
|
+
if (s.active) {
|
|
141
|
+
lines.push('');
|
|
142
|
+
lines.push(`Sessione: attiva (${s.durationMinutes ?? '?'}min) | ID: ${s.id}`);
|
|
143
|
+
lines.push(`Note: ${s.counts.notesTotal} (${s.counts.notesUser} utente, ${s.counts.notesAgent} agente)`);
|
|
144
|
+
lines.push(`Task: ${s.counts.tasksOpen} aperti, ${s.counts.tasksDone} completati`);
|
|
145
|
+
lines.push(`Decisioni: ${s.counts.decisions} | Warning: ${s.counts.warnings}`);
|
|
146
|
+
if (s.isLong) {
|
|
147
|
+
lines.push('⚠ Sessione lunga (>2h)');
|
|
148
|
+
}
|
|
149
|
+
if (s.recentEntries.length > 0) {
|
|
150
|
+
lines.push('Ultime entry:');
|
|
151
|
+
for (const e of s.recentEntries) {
|
|
152
|
+
lines.push(` [${e.kind}/${e.source}] ${e.text} (${e.minutesAgo}min fa)`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
lines.push('');
|
|
158
|
+
lines.push('Sessione: nessuna attiva');
|
|
159
|
+
}
|
|
160
|
+
// Capabilities
|
|
161
|
+
const c = packet.capabilities;
|
|
162
|
+
lines.push('');
|
|
163
|
+
lines.push(`Auth: ${c.authenticated ? 'ok' : 'no'} | Backend: ${c.backendReachable === null ? 'non verificato' : c.backendReachable ? 'ok' : 'non raggiungibile'} | Livello: ${c.capabilityLevel}`);
|
|
164
|
+
// Tech
|
|
165
|
+
const t = packet.tech;
|
|
166
|
+
lines.push(`Dir: ${t.cwd} | Branch: ${t.gitBranch ?? 'n/a'} | Dirty: ${t.gitDirty === null ? 'n/v' : t.gitDirty ? 'si' : 'no'}`);
|
|
167
|
+
if (t.lastError) {
|
|
168
|
+
lines.push(`Ultimo errore: ${t.lastError}`);
|
|
169
|
+
}
|
|
170
|
+
return lines.join('\n');
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Stima approssimativa dei token del system prompt (per budgeting).
|
|
174
|
+
* Conta ~4 char per token (approssimazione standard).
|
|
175
|
+
*/
|
|
176
|
+
export function estimatePromptTokens(prompt) {
|
|
177
|
+
return Math.ceil(prompt.length / 4);
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=agent-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-prompt.js","sourceRoot":"","sources":["../../../src/lib/intelligence/agent-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Capability Map — Definisce cosa il CLI Intelligence Layer può fare.
|
|
3
|
+
*
|
|
4
|
+
* Ogni capability ha:
|
|
5
|
+
* - livello (explain, inspect, suggest, act)
|
|
6
|
+
* - se è attivabile nella fase corrente
|
|
7
|
+
* - se richiede conferma utente
|
|
8
|
+
* - se è locale-only o usa backend
|
|
9
|
+
* - se è sicura, sensibile o da posticipare
|
|
10
|
+
*
|
|
11
|
+
* PRINCIPI:
|
|
12
|
+
* - Conservativo: phase 1 = solo lettura e suggerimenti
|
|
13
|
+
* - Esplicito: ogni capability ha un risk assessment
|
|
14
|
+
* - Grounded: mappa direttamente a comandi esistenti nella CLI
|
|
15
|
+
*/
|
|
16
|
+
import type { CapabilityLevel } from './context-packet.js';
|
|
17
|
+
/** I 4 livelli operativi del CLI Intelligence Layer */
|
|
18
|
+
export type CapabilityTier = 'explain' | 'inspect' | 'suggest' | 'act';
|
|
19
|
+
/** Dove viene eseguita l'operazione */
|
|
20
|
+
export type ExecutionScope = 'local_only' | 'backend_read' | 'backend_write';
|
|
21
|
+
/** Rischio dell'operazione */
|
|
22
|
+
export type RiskLevel = 'safe' | 'sensitive' | 'deferred';
|
|
23
|
+
/** Fase di implementazione in cui la capability diventa disponibile */
|
|
24
|
+
export type ImplementationPhase = 1 | 2 | 3;
|
|
25
|
+
/** Singola capability del CLI Intelligence Layer */
|
|
26
|
+
export interface Capability {
|
|
27
|
+
/** Identificatore unico */
|
|
28
|
+
id: string;
|
|
29
|
+
/** Livello operativo */
|
|
30
|
+
tier: CapabilityTier;
|
|
31
|
+
/** Descrizione concisa (per il modello) */
|
|
32
|
+
description: string;
|
|
33
|
+
/** Dove viene eseguita */
|
|
34
|
+
scope: ExecutionScope;
|
|
35
|
+
/** Rischio */
|
|
36
|
+
risk: RiskLevel;
|
|
37
|
+
/** Richiede conferma utente? */
|
|
38
|
+
requiresConfirmation: boolean;
|
|
39
|
+
/** Fase di implementazione */
|
|
40
|
+
phase: ImplementationPhase;
|
|
41
|
+
/** Capability level minimo richiesto */
|
|
42
|
+
minCapabilityLevel: CapabilityLevel;
|
|
43
|
+
/** Comando CLI corrispondente (se esiste) */
|
|
44
|
+
mappedCommand: string | null;
|
|
45
|
+
}
|
|
46
|
+
export declare const CAPABILITY_REGISTRY: readonly Capability[];
|
|
47
|
+
/** Ritorna capabilities disponibili per un dato livello e fase */
|
|
48
|
+
export declare function getAvailableCapabilities(capabilityLevel: CapabilityLevel, phase: ImplementationPhase): Capability[];
|
|
49
|
+
/** Ritorna capabilities raggruppate per tier */
|
|
50
|
+
export declare function getCapabilitiesByTier(capabilityLevel: CapabilityLevel, phase: ImplementationPhase): Record<CapabilityTier, Capability[]>;
|
|
51
|
+
/** Verifica se una capability specifica è abilitata */
|
|
52
|
+
export declare function isCapabilityEnabled(id: string, capabilityLevel: CapabilityLevel, phase: ImplementationPhase): boolean;
|
|
53
|
+
export declare const PHASE_1_EXCLUSIONS: readonly ["high_risk_remote_write", "automatic_memory_sync", "automatic_report_without_confirmation", "autonomous_multi_step_tool_loop", "silent_project_modifications", "backend_memory_write", "session_bidirectional_sync"];
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Capability Map — Definisce cosa il CLI Intelligence Layer può fare.
|
|
3
|
+
*
|
|
4
|
+
* Ogni capability ha:
|
|
5
|
+
* - livello (explain, inspect, suggest, act)
|
|
6
|
+
* - se è attivabile nella fase corrente
|
|
7
|
+
* - se richiede conferma utente
|
|
8
|
+
* - se è locale-only o usa backend
|
|
9
|
+
* - se è sicura, sensibile o da posticipare
|
|
10
|
+
*
|
|
11
|
+
* PRINCIPI:
|
|
12
|
+
* - Conservativo: phase 1 = solo lettura e suggerimenti
|
|
13
|
+
* - Esplicito: ogni capability ha un risk assessment
|
|
14
|
+
* - Grounded: mappa direttamente a comandi esistenti nella CLI
|
|
15
|
+
*/
|
|
16
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
17
|
+
// CAPABILITY REGISTRY
|
|
18
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
19
|
+
export const CAPABILITY_REGISTRY = [
|
|
20
|
+
// ─── TIER: EXPLAIN ────────────────────────────────────────────
|
|
21
|
+
{
|
|
22
|
+
id: 'explain_orbit',
|
|
23
|
+
tier: 'explain',
|
|
24
|
+
description: 'Spiega cos\'è Orbit, come funziona, quali componenti ha',
|
|
25
|
+
scope: 'local_only',
|
|
26
|
+
risk: 'safe',
|
|
27
|
+
requiresConfirmation: false,
|
|
28
|
+
phase: 1,
|
|
29
|
+
minCapabilityLevel: 'offline',
|
|
30
|
+
mappedCommand: null,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'explain_cli',
|
|
34
|
+
tier: 'explain',
|
|
35
|
+
description: 'Spiega i comandi della CLI, il workflow, come usarla',
|
|
36
|
+
scope: 'local_only',
|
|
37
|
+
risk: 'safe',
|
|
38
|
+
requiresConfirmation: false,
|
|
39
|
+
phase: 1,
|
|
40
|
+
minCapabilityLevel: 'offline',
|
|
41
|
+
mappedCommand: '/help',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'explain_state',
|
|
45
|
+
tier: 'explain',
|
|
46
|
+
description: 'Spiega lo stato locale corrente (sessione, progetto, contesto)',
|
|
47
|
+
scope: 'local_only',
|
|
48
|
+
risk: 'safe',
|
|
49
|
+
requiresConfirmation: false,
|
|
50
|
+
phase: 1,
|
|
51
|
+
minCapabilityLevel: 'offline',
|
|
52
|
+
mappedCommand: '/info',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: 'explain_error',
|
|
56
|
+
tier: 'explain',
|
|
57
|
+
description: 'Spiega un errore recente e suggerisci come risolverlo',
|
|
58
|
+
scope: 'local_only',
|
|
59
|
+
risk: 'safe',
|
|
60
|
+
requiresConfirmation: false,
|
|
61
|
+
phase: 1,
|
|
62
|
+
minCapabilityLevel: 'offline',
|
|
63
|
+
mappedCommand: null,
|
|
64
|
+
},
|
|
65
|
+
// ─── TIER: INSPECT ────────────────────────────────────────────
|
|
66
|
+
{
|
|
67
|
+
id: 'inspect_session',
|
|
68
|
+
tier: 'inspect',
|
|
69
|
+
description: 'Leggi il summary della sessione attiva, task, decisioni',
|
|
70
|
+
scope: 'local_only',
|
|
71
|
+
risk: 'safe',
|
|
72
|
+
requiresConfirmation: false,
|
|
73
|
+
phase: 1,
|
|
74
|
+
minCapabilityLevel: 'offline',
|
|
75
|
+
mappedCommand: '/session info',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'inspect_context',
|
|
79
|
+
tier: 'inspect',
|
|
80
|
+
description: 'Leggi il contesto progetto, health, attributed sources',
|
|
81
|
+
scope: 'local_only',
|
|
82
|
+
risk: 'safe',
|
|
83
|
+
requiresConfirmation: false,
|
|
84
|
+
phase: 1,
|
|
85
|
+
minCapabilityLevel: 'offline',
|
|
86
|
+
mappedCommand: '/context',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: 'inspect_interventions',
|
|
90
|
+
tier: 'inspect',
|
|
91
|
+
description: 'Lista interventi recenti dal backend Orbit',
|
|
92
|
+
scope: 'backend_read',
|
|
93
|
+
risk: 'safe',
|
|
94
|
+
requiresConfirmation: false,
|
|
95
|
+
phase: 1,
|
|
96
|
+
minCapabilityLevel: 'readonly',
|
|
97
|
+
mappedCommand: '/list',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 'inspect_doctor',
|
|
101
|
+
tier: 'inspect',
|
|
102
|
+
description: 'Esegui diagnostica locale (token, API, git, sito)',
|
|
103
|
+
scope: 'local_only',
|
|
104
|
+
risk: 'safe',
|
|
105
|
+
requiresConfirmation: false,
|
|
106
|
+
phase: 1,
|
|
107
|
+
minCapabilityLevel: 'offline',
|
|
108
|
+
mappedCommand: '/doctor',
|
|
109
|
+
},
|
|
110
|
+
// ─── TIER: SUGGEST ────────────────────────────────────────────
|
|
111
|
+
{
|
|
112
|
+
id: 'suggest_next_step',
|
|
113
|
+
tier: 'suggest',
|
|
114
|
+
description: 'Suggerisci il prossimo comando basato sullo stato',
|
|
115
|
+
scope: 'local_only',
|
|
116
|
+
risk: 'safe',
|
|
117
|
+
requiresConfirmation: false,
|
|
118
|
+
phase: 1,
|
|
119
|
+
minCapabilityLevel: 'offline',
|
|
120
|
+
mappedCommand: null,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: 'suggest_task_creation',
|
|
124
|
+
tier: 'suggest',
|
|
125
|
+
description: 'Suggerisci task da creare basato sulla conversazione',
|
|
126
|
+
scope: 'local_only',
|
|
127
|
+
risk: 'safe',
|
|
128
|
+
requiresConfirmation: false,
|
|
129
|
+
phase: 1,
|
|
130
|
+
minCapabilityLevel: 'offline',
|
|
131
|
+
mappedCommand: null,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: 'suggest_report',
|
|
135
|
+
tier: 'suggest',
|
|
136
|
+
description: 'Suggerisci se è il momento di inviare un /report',
|
|
137
|
+
scope: 'local_only',
|
|
138
|
+
risk: 'safe',
|
|
139
|
+
requiresConfirmation: false,
|
|
140
|
+
phase: 1,
|
|
141
|
+
minCapabilityLevel: 'offline',
|
|
142
|
+
mappedCommand: null,
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
id: 'suggest_recovery',
|
|
146
|
+
tier: 'suggest',
|
|
147
|
+
description: 'Suggerisci passi di recovery per errori o problemi',
|
|
148
|
+
scope: 'local_only',
|
|
149
|
+
risk: 'safe',
|
|
150
|
+
requiresConfirmation: false,
|
|
151
|
+
phase: 1,
|
|
152
|
+
minCapabilityLevel: 'offline',
|
|
153
|
+
mappedCommand: null,
|
|
154
|
+
},
|
|
155
|
+
// ─── TIER: ACT ────────────────────────────────────────────────
|
|
156
|
+
{
|
|
157
|
+
id: 'act_create_note',
|
|
158
|
+
tier: 'act',
|
|
159
|
+
description: 'Crea una nota nella sessione locale',
|
|
160
|
+
scope: 'local_only',
|
|
161
|
+
risk: 'safe',
|
|
162
|
+
requiresConfirmation: false,
|
|
163
|
+
phase: 2,
|
|
164
|
+
minCapabilityLevel: 'local_write',
|
|
165
|
+
mappedCommand: '/note',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: 'act_create_task',
|
|
169
|
+
tier: 'act',
|
|
170
|
+
description: 'Crea un task nella sessione locale',
|
|
171
|
+
scope: 'local_only',
|
|
172
|
+
risk: 'safe',
|
|
173
|
+
requiresConfirmation: false,
|
|
174
|
+
phase: 2,
|
|
175
|
+
minCapabilityLevel: 'local_write',
|
|
176
|
+
mappedCommand: '/task add',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: 'act_create_decision',
|
|
180
|
+
tier: 'act',
|
|
181
|
+
description: 'Registra una decisione nella sessione locale',
|
|
182
|
+
scope: 'local_only',
|
|
183
|
+
risk: 'safe',
|
|
184
|
+
requiresConfirmation: false,
|
|
185
|
+
phase: 2,
|
|
186
|
+
minCapabilityLevel: 'local_write',
|
|
187
|
+
mappedCommand: '/decision',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
id: 'act_complete_task',
|
|
191
|
+
tier: 'act',
|
|
192
|
+
description: 'Marca un task come completato',
|
|
193
|
+
scope: 'local_only',
|
|
194
|
+
risk: 'safe',
|
|
195
|
+
requiresConfirmation: false,
|
|
196
|
+
phase: 2,
|
|
197
|
+
minCapabilityLevel: 'local_write',
|
|
198
|
+
mappedCommand: '/task done',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
id: 'act_run_diagnose',
|
|
202
|
+
tier: 'act',
|
|
203
|
+
description: 'Esegui diagnostica aggregata /diagnose',
|
|
204
|
+
scope: 'backend_read',
|
|
205
|
+
risk: 'sensitive',
|
|
206
|
+
requiresConfirmation: true,
|
|
207
|
+
phase: 3,
|
|
208
|
+
minCapabilityLevel: 'readonly',
|
|
209
|
+
mappedCommand: '/diagnose',
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
id: 'act_send_report',
|
|
213
|
+
tier: 'act',
|
|
214
|
+
description: 'Invia report a Orbit (crea intervento)',
|
|
215
|
+
scope: 'backend_write',
|
|
216
|
+
risk: 'sensitive',
|
|
217
|
+
requiresConfirmation: true,
|
|
218
|
+
phase: 3,
|
|
219
|
+
minCapabilityLevel: 'full',
|
|
220
|
+
mappedCommand: '/report',
|
|
221
|
+
},
|
|
222
|
+
];
|
|
223
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
224
|
+
// QUERY FUNCTIONS
|
|
225
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
226
|
+
/** Ritorna capabilities disponibili per un dato livello e fase */
|
|
227
|
+
export function getAvailableCapabilities(capabilityLevel, phase) {
|
|
228
|
+
const levelOrder = {
|
|
229
|
+
offline: 0,
|
|
230
|
+
readonly: 1,
|
|
231
|
+
local_write: 2,
|
|
232
|
+
full: 3,
|
|
233
|
+
};
|
|
234
|
+
const currentLevel = levelOrder[capabilityLevel];
|
|
235
|
+
return CAPABILITY_REGISTRY.filter(cap => {
|
|
236
|
+
const requiredLevel = levelOrder[cap.minCapabilityLevel];
|
|
237
|
+
return cap.phase <= phase && requiredLevel <= currentLevel;
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
/** Ritorna capabilities raggruppate per tier */
|
|
241
|
+
export function getCapabilitiesByTier(capabilityLevel, phase) {
|
|
242
|
+
const available = getAvailableCapabilities(capabilityLevel, phase);
|
|
243
|
+
return {
|
|
244
|
+
explain: available.filter(c => c.tier === 'explain'),
|
|
245
|
+
inspect: available.filter(c => c.tier === 'inspect'),
|
|
246
|
+
suggest: available.filter(c => c.tier === 'suggest'),
|
|
247
|
+
act: available.filter(c => c.tier === 'act'),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/** Verifica se una capability specifica è abilitata */
|
|
251
|
+
export function isCapabilityEnabled(id, capabilityLevel, phase) {
|
|
252
|
+
return getAvailableCapabilities(capabilityLevel, phase).some(c => c.id === id);
|
|
253
|
+
}
|
|
254
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
255
|
+
// EXCLUSION LIST — cosa NON fare nella prima fase
|
|
256
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
257
|
+
export const PHASE_1_EXCLUSIONS = [
|
|
258
|
+
'high_risk_remote_write',
|
|
259
|
+
'automatic_memory_sync',
|
|
260
|
+
'automatic_report_without_confirmation',
|
|
261
|
+
'autonomous_multi_step_tool_loop',
|
|
262
|
+
'silent_project_modifications',
|
|
263
|
+
'backend_memory_write',
|
|
264
|
+
'session_bidirectional_sync',
|
|
265
|
+
];
|
|
266
|
+
//# sourceMappingURL=capability-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-map.js","sourceRoot":"","sources":["../../../src/lib/intelligence/capability-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat enrichment — Arricchisce il messaggio utente con contesto CLI.
|
|
3
|
+
*
|
|
4
|
+
* Questo modulo è il punto di integrazione tra il CLI Intelligence Layer
|
|
5
|
+
* e il flusso AI chat esistente. Arricchisce il messaggio inviato al backend
|
|
6
|
+
* con informazioni sul contesto locale che il backend non conosce.
|
|
7
|
+
*
|
|
8
|
+
* NON modifica il system prompt del backend (non ne ha controllo).
|
|
9
|
+
* NON aggiunge dipendenze nuove.
|
|
10
|
+
* NON fa I/O — usa solo dati già disponibili in OrbitStore.
|
|
11
|
+
*
|
|
12
|
+
* Approccio: prefissa il messaggio utente con un blocco di contesto leggero
|
|
13
|
+
* racchiuso in tag XML-like che il backend LLM può leggere ma che non
|
|
14
|
+
* interferiscono con il messaggio dell'utente.
|
|
15
|
+
*/
|
|
16
|
+
import { type ContextPacketInput } from './context-packet.js';
|
|
17
|
+
import type { OrbitState } from '../../state/types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Costruisce un ContextPacketInput dai dati già presenti in OrbitState.
|
|
20
|
+
* Pure function — nessun I/O, nessun side effect.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildContextInputFromState(state: OrbitState, cwd: string): ContextPacketInput;
|
|
23
|
+
/**
|
|
24
|
+
* Formatta un contesto compatto (~150-200 token) da anteporre al messaggio utente.
|
|
25
|
+
* Il formato è un blocco racchiuso in tag che il LLM può leggere.
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatContextPrefix(state: OrbitState, cwd: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Arricchisce il messaggio utente con il contesto CLI.
|
|
30
|
+
* Se il contesto non è disponibile, ritorna il messaggio originale (fallback).
|
|
31
|
+
*/
|
|
32
|
+
export declare function enrichMessageWithContext(userMessage: string, state: OrbitState, cwd: string): string;
|