@orbitpanel/cli 1.2.1 → 1.3.1

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.
Files changed (46) hide show
  1. package/dist/commands/init.d.ts +13 -0
  2. package/dist/commands/init.js +65 -0
  3. package/dist/commands/init.js.map +1 -0
  4. package/dist/components/ShellApp.js +15 -3
  5. package/dist/components/ShellApp.js.map +1 -1
  6. package/dist/components/StatusBar.d.ts +3 -0
  7. package/dist/components/StatusBar.js +15 -2
  8. package/dist/components/StatusBar.js.map +1 -1
  9. package/dist/lib/command-router.js +101 -8
  10. package/dist/lib/command-router.js.map +1 -1
  11. package/dist/lib/context-guard.d.ts +63 -0
  12. package/dist/lib/context-guard.js +129 -0
  13. package/dist/lib/context-guard.js.map +1 -0
  14. package/dist/lib/context-health.d.ts +37 -0
  15. package/dist/lib/context-health.js +162 -0
  16. package/dist/lib/context-health.js.map +1 -0
  17. package/dist/lib/environment.d.ts +19 -0
  18. package/dist/lib/environment.js +75 -0
  19. package/dist/lib/environment.js.map +1 -0
  20. package/dist/lib/init-logic.d.ts +27 -0
  21. package/dist/lib/init-logic.js +34 -0
  22. package/dist/lib/init-logic.js.map +1 -0
  23. package/dist/lib/instructions.d.ts +18 -0
  24. package/dist/lib/instructions.js +37 -0
  25. package/dist/lib/instructions.js.map +1 -0
  26. package/dist/lib/manifest.d.ts +38 -0
  27. package/dist/lib/manifest.js +237 -0
  28. package/dist/lib/manifest.js.map +1 -0
  29. package/dist/lib/shell-hints.d.ts +16 -0
  30. package/dist/lib/shell-hints.js +61 -3
  31. package/dist/lib/shell-hints.js.map +1 -1
  32. package/dist/lib/shell-ink.js +2 -1
  33. package/dist/lib/shell-ink.js.map +1 -1
  34. package/dist/lib/shell-render.js +1 -0
  35. package/dist/lib/shell-render.js.map +1 -1
  36. package/dist/lib/shell.js +6 -3
  37. package/dist/lib/shell.js.map +1 -1
  38. package/dist/lib/status-bar.d.ts +5 -0
  39. package/dist/lib/status-bar.js +24 -7
  40. package/dist/lib/status-bar.js.map +1 -1
  41. package/dist/state/store.js +46 -3
  42. package/dist/state/store.js.map +1 -1
  43. package/dist/state/types.d.ts +16 -2
  44. package/dist/types.d.ts +76 -0
  45. package/oclif.manifest.json +71 -1
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"status-bar.js","sourceRoot":"","sources":["../../src/lib/status-bar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-bar.js","sourceRoot":"","sources":["../../src/lib/status-bar.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,19 @@
4
4
  * No external dependencies — pure TypeScript with dependency injection.
5
5
  */
6
6
  import { detectRuntime } from '../lib/runtime.js';
7
+ import { evaluateContextHealth, buildAttributedContext } from '../lib/context-health.js';
7
8
  function initialState() {
8
9
  return {
9
10
  runtime: detectRuntime(),
10
11
  config: { api_url: '', tokens: {} },
11
12
  tokenEntry: null,
12
13
  siteLink: null,
14
+ manifest: null,
15
+ manifestDir: null,
16
+ manifestLegacy: false,
17
+ instructions: null,
18
+ contextHealth: { level: 'ok', issues: [] },
19
+ attributedContext: { projectName: null, environment: null, siteId: null, platform: null },
13
20
  session: null,
14
21
  gitBranch: null,
15
22
  pendingRequests: 0,
@@ -68,14 +75,50 @@ export class OrbitStore {
68
75
  const config = await this.io.loadConfig();
69
76
  const tokenEntry = deriveTokenEntry(config);
70
77
  const siteLink = await this.io.loadSiteLink(cwd);
71
- // Only load session if a site is linked
72
- const session = siteLink
73
- ? await this.io.loadActiveSession(siteLink.orbit_site_id)
78
+ // Load project manifest (new format) if IO supports it
79
+ let manifest = this.state.manifest;
80
+ let manifestDir = this.state.manifestDir;
81
+ let manifestLegacy = this.state.manifestLegacy;
82
+ let instructions = this.state.instructions;
83
+ if (this.io.findManifest) {
84
+ const result = await this.io.findManifest(cwd);
85
+ manifest = result.manifest;
86
+ manifestDir = result.manifestDir;
87
+ manifestLegacy = result.legacy;
88
+ // Load instructions if manifest found and IO supports it
89
+ if (manifestDir && this.io.loadInstructions) {
90
+ instructions = await this.io.loadInstructions(manifestDir);
91
+ }
92
+ }
93
+ // Determine site ID for session loading
94
+ // Priority: manifest.linkedSiteId > siteLink.orbit_site_id
95
+ const siteId = manifest?.linkedSiteId ?? siteLink?.orbit_site_id;
96
+ const session = siteId
97
+ ? await this.io.loadActiveSession(siteId)
74
98
  : null;
75
99
  const gitBranch = await this.io.getGitBranch();
100
+ // Compute context health and attribution
101
+ const runtimeUrl = siteLink?.final_url ?? undefined;
102
+ const contextHealth = evaluateContextHealth({
103
+ manifest,
104
+ siteLink,
105
+ runtimeUrl,
106
+ manifestLegacy,
107
+ });
108
+ const attributedContext = buildAttributedContext({
109
+ manifest,
110
+ siteLink,
111
+ runtimeUrl,
112
+ });
76
113
  this.state.config = config;
77
114
  this.state.tokenEntry = tokenEntry;
78
115
  this.state.siteLink = siteLink;
116
+ this.state.manifest = manifest;
117
+ this.state.manifestDir = manifestDir;
118
+ this.state.manifestLegacy = manifestLegacy;
119
+ this.state.instructions = instructions;
120
+ this.state.contextHealth = contextHealth;
121
+ this.state.attributedContext = attributedContext;
79
122
  this.state.session = session;
80
123
  this.state.gitBranch = gitBranch;
81
124
  this.state.runtime = detectRuntime();
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * State management types for @orbitpanel/cli.
3
3
  * Centralized state definitions — no runtime dependencies.
4
4
  */
5
- import type { OrbitConfig, SiteLink, SessionState, TokenEntry } from '../types.js';
5
+ import type { OrbitConfig, SiteLink, SessionState, TokenEntry, ProjectManifest, ManifestValidationResult, ContextHealth, AttributedContext } from '../types.js';
6
6
  import type { RuntimeMode } from '../lib/runtime.js';
7
7
  /** Centralized CLI state */
8
8
  export interface OrbitState {
@@ -12,8 +12,20 @@ export interface OrbitState {
12
12
  config: OrbitConfig;
13
13
  /** Active token entry (derived from config.default_site) */
14
14
  tokenEntry: TokenEntry | null;
15
- /** Site link from .orbit.json in cwd */
15
+ /** Site link from .orbit.json in cwd (legacy — prefer manifest) */
16
16
  siteLink: SiteLink | null;
17
+ /** Project manifest from .orbit/project.json (preferred) or legacy .orbit.json */
18
+ manifest: ProjectManifest | null;
19
+ /** Directory where manifest was found (for instructions loading) */
20
+ manifestDir: string | null;
21
+ /** Whether manifest was loaded from legacy .orbit.json format */
22
+ manifestLegacy: boolean;
23
+ /** Project instructions from .orbit/instructions.md */
24
+ instructions: string | null;
25
+ /** Context health assessment — trust level and issues */
26
+ contextHealth: ContextHealth;
27
+ /** Attributed context — every field knows its source */
28
+ attributedContext: AttributedContext;
17
29
  /** Active session for the current site */
18
30
  session: SessionState | null;
19
31
  /** Current git branch */
@@ -31,6 +43,8 @@ export interface StoreIO {
31
43
  loadSiteLink(cwd: string): Promise<SiteLink | null>;
32
44
  loadActiveSession(siteId: string): Promise<SessionState | null>;
33
45
  getGitBranch(): Promise<string | null>;
46
+ findManifest?(cwd: string): Promise<ManifestValidationResult>;
47
+ loadInstructions?(manifestDir: string): Promise<string | null>;
34
48
  }
35
49
  /** Shared context passed from shell REPL to command handlers. */
36
50
  export interface ShellContext {
package/dist/types.d.ts CHANGED
@@ -74,3 +74,79 @@ export interface TokenValidation {
74
74
  site_domain?: string;
75
75
  error?: string;
76
76
  }
77
+ /** Supported schema versions */
78
+ export type ManifestVersion = 1;
79
+ /** Supported platform types */
80
+ export type PlatformType = 'wordpress' | 'prestashop' | 'custom';
81
+ /** Supported environment identifiers */
82
+ export type EnvironmentType = 'local' | 'dev' | 'staging' | 'production';
83
+ /**
84
+ * Project manifest stored in .orbit/project.json
85
+ * Source of truth for project identity. Committable.
86
+ */
87
+ export interface ProjectManifest {
88
+ /** Schema version — allows future migration */
89
+ version: ManifestVersion;
90
+ /** Human-readable project name */
91
+ name: string;
92
+ /** Platform type */
93
+ platform: PlatformType;
94
+ /** Environment identifier */
95
+ environment: EnvironmentType;
96
+ /** Orbit backend site ID (set by `orbit link`) */
97
+ linkedSiteId?: string;
98
+ /** Project root relative to manifest location (default ".") */
99
+ root?: string;
100
+ }
101
+ /** Result of manifest validation */
102
+ export interface ManifestValidationResult {
103
+ valid: boolean;
104
+ manifest: ProjectManifest | null;
105
+ errors: string[];
106
+ warnings: string[];
107
+ /** Directory where manifest was found (null if not found) */
108
+ manifestDir: string | null;
109
+ /** Whether this was loaded from legacy .orbit.json */
110
+ legacy: boolean;
111
+ }
112
+ /** Result of environment mismatch check */
113
+ export interface EnvironmentCheck {
114
+ manifestEnv: EnvironmentType;
115
+ detectedEnv: EnvironmentType | null;
116
+ mismatch: boolean;
117
+ warning: string | null;
118
+ }
119
+ /** Where a piece of context data came from */
120
+ export type ContextSource = 'manifest' | 'legacy' | 'runtime' | 'default';
121
+ /** A value with its provenance tracked */
122
+ export interface Attributed<T> {
123
+ value: T;
124
+ source: ContextSource;
125
+ }
126
+ /** Trust levels — ordered by severity */
127
+ export type ContextHealthLevel = 'ok' | 'info' | 'warning' | 'critical';
128
+ /** A single consistency issue found during evaluation */
129
+ export interface ContextIssue {
130
+ level: ContextHealthLevel;
131
+ field: string;
132
+ message: string;
133
+ /** What the sources disagree about */
134
+ detail?: {
135
+ sources: Array<{
136
+ source: ContextSource;
137
+ value: string;
138
+ }>;
139
+ };
140
+ }
141
+ /** Overall context health assessment */
142
+ export interface ContextHealth {
143
+ level: ContextHealthLevel;
144
+ issues: ContextIssue[];
145
+ }
146
+ /** Attributed context — every field knows its origin */
147
+ export interface AttributedContext {
148
+ projectName: Attributed<string> | null;
149
+ environment: Attributed<EnvironmentType | string> | null;
150
+ siteId: Attributed<string> | null;
151
+ platform: Attributed<PlatformType> | null;
152
+ }
@@ -23,6 +23,76 @@
23
23
  "doctor.js"
24
24
  ]
25
25
  },
26
+ "init": {
27
+ "aliases": [],
28
+ "args": {},
29
+ "description": "Crea .orbit/project.json per identificare il progetto.\nNON collega automaticamente a un sito Orbit — usa `orbit link` per quello.",
30
+ "examples": [
31
+ "<%= config.bin %> init --name my-project --platform wordpress --env local",
32
+ "<%= config.bin %> init --name staging-site --env staging"
33
+ ],
34
+ "flags": {
35
+ "name": {
36
+ "char": "n",
37
+ "description": "Nome del progetto",
38
+ "name": "name",
39
+ "required": true,
40
+ "hasDynamicHelp": false,
41
+ "multiple": false,
42
+ "type": "option"
43
+ },
44
+ "platform": {
45
+ "char": "p",
46
+ "description": "Piattaforma (auto-detect se omesso)",
47
+ "name": "platform",
48
+ "hasDynamicHelp": false,
49
+ "multiple": false,
50
+ "options": [
51
+ "wordpress",
52
+ "prestashop",
53
+ "custom"
54
+ ],
55
+ "type": "option"
56
+ },
57
+ "env": {
58
+ "char": "e",
59
+ "description": "Ambiente",
60
+ "name": "env",
61
+ "default": "local",
62
+ "hasDynamicHelp": false,
63
+ "multiple": false,
64
+ "options": [
65
+ "local",
66
+ "dev",
67
+ "staging",
68
+ "production"
69
+ ],
70
+ "type": "option"
71
+ },
72
+ "force": {
73
+ "char": "f",
74
+ "description": "Sovrascrive un manifest esistente",
75
+ "name": "force",
76
+ "allowNo": false,
77
+ "type": "boolean"
78
+ }
79
+ },
80
+ "hasDynamicHelp": false,
81
+ "hiddenAliases": [],
82
+ "id": "init",
83
+ "pluginAlias": "@orbitpanel/cli",
84
+ "pluginName": "@orbitpanel/cli",
85
+ "pluginType": "core",
86
+ "strict": true,
87
+ "summary": "Inizializza un progetto Orbit nella directory corrente",
88
+ "enableJsonFlag": false,
89
+ "isESM": true,
90
+ "relativePath": [
91
+ "dist",
92
+ "commands",
93
+ "init.js"
94
+ ]
95
+ },
26
96
  "link": {
27
97
  "aliases": [],
28
98
  "args": {},
@@ -749,5 +819,5 @@
749
819
  ]
750
820
  }
751
821
  },
752
- "version": "1.2.1"
822
+ "version": "1.3.1"
753
823
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbitpanel/cli",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "Orbit CLI — strumento locale per sviluppatori OrbitPanel",
5
5
  "type": "module",
6
6
  "bin": {