@portel/photon 1.18.0 → 1.19.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.
Files changed (172) hide show
  1. package/dist/auto-ui/beam.d.ts.map +1 -1
  2. package/dist/auto-ui/beam.js +14 -4
  3. package/dist/auto-ui/beam.js.map +1 -1
  4. package/dist/beam-form.bundle.js +5 -3
  5. package/dist/beam-form.bundle.js.map +2 -2
  6. package/dist/beam.bundle.js +686 -30
  7. package/dist/beam.bundle.js.map +3 -3
  8. package/dist/claude-code-plugin.js +1 -1
  9. package/dist/cli/commands/beam.d.ts.map +1 -1
  10. package/dist/cli/commands/beam.js +8 -2
  11. package/dist/cli/commands/beam.js.map +1 -1
  12. package/dist/cli/commands/changelog.d.ts +9 -0
  13. package/dist/cli/commands/changelog.d.ts.map +1 -0
  14. package/dist/cli/commands/changelog.js +133 -0
  15. package/dist/cli/commands/changelog.js.map +1 -0
  16. package/dist/cli/commands/maker.d.ts.map +1 -1
  17. package/dist/cli/commands/maker.js +23 -2
  18. package/dist/cli/commands/maker.js.map +1 -1
  19. package/dist/cli/commands/mcp.d.ts.map +1 -1
  20. package/dist/cli/commands/mcp.js +53 -0
  21. package/dist/cli/commands/mcp.js.map +1 -1
  22. package/dist/cli/commands/package.d.ts.map +1 -1
  23. package/dist/cli/commands/package.js +18 -2
  24. package/dist/cli/commands/package.js.map +1 -1
  25. package/dist/cli/commands/run.d.ts.map +1 -1
  26. package/dist/cli/commands/run.js +1 -0
  27. package/dist/cli/commands/run.js.map +1 -1
  28. package/dist/cli/commands/update.d.ts +3 -2
  29. package/dist/cli/commands/update.d.ts.map +1 -1
  30. package/dist/cli/commands/update.js +50 -43
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/index.d.ts.map +1 -1
  33. package/dist/cli/index.js +16 -2
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/cli-alias.js +1 -1
  36. package/dist/cli-alias.js.map +1 -1
  37. package/dist/context-store.d.ts +23 -33
  38. package/dist/context-store.d.ts.map +1 -1
  39. package/dist/context-store.js +147 -97
  40. package/dist/context-store.js.map +1 -1
  41. package/dist/context.d.ts +15 -10
  42. package/dist/context.d.ts.map +1 -1
  43. package/dist/context.js +37 -13
  44. package/dist/context.js.map +1 -1
  45. package/dist/daemon/server.js +4 -2
  46. package/dist/daemon/server.js.map +1 -1
  47. package/dist/data-migration.d.ts +27 -0
  48. package/dist/data-migration.d.ts.map +1 -0
  49. package/dist/data-migration.js +307 -0
  50. package/dist/data-migration.js.map +1 -0
  51. package/dist/editor-support/docblock-tag-catalog.d.ts.map +1 -1
  52. package/dist/editor-support/docblock-tag-catalog.js +6 -0
  53. package/dist/editor-support/docblock-tag-catalog.js.map +1 -1
  54. package/dist/loader.d.ts +10 -0
  55. package/dist/loader.d.ts.map +1 -1
  56. package/dist/loader.js +97 -12
  57. package/dist/loader.js.map +1 -1
  58. package/dist/marketplace-manager.d.ts.map +1 -1
  59. package/dist/marketplace-manager.js +25 -5
  60. package/dist/marketplace-manager.js.map +1 -1
  61. package/dist/photon-cli-runner.d.ts.map +1 -1
  62. package/dist/photon-cli-runner.js +47 -21
  63. package/dist/photon-cli-runner.js.map +1 -1
  64. package/dist/photon-doc-extractor.d.ts +1 -0
  65. package/dist/photon-doc-extractor.d.ts.map +1 -1
  66. package/dist/photon-doc-extractor.js +6 -0
  67. package/dist/photon-doc-extractor.js.map +1 -1
  68. package/dist/readme-syncer.d.ts.map +1 -1
  69. package/dist/readme-syncer.js +6 -1
  70. package/dist/readme-syncer.js.map +1 -1
  71. package/dist/server.d.ts +40 -0
  72. package/dist/server.d.ts.map +1 -1
  73. package/dist/server.js +143 -28
  74. package/dist/server.js.map +1 -1
  75. package/dist/shared/audit.js +4 -4
  76. package/dist/shared/audit.js.map +1 -1
  77. package/dist/tasks/store.d.ts.map +1 -1
  78. package/dist/tasks/store.js +6 -2
  79. package/dist/tasks/store.js.map +1 -1
  80. package/dist/version-notify.d.ts +27 -0
  81. package/dist/version-notify.d.ts.map +1 -0
  82. package/dist/version-notify.js +142 -0
  83. package/dist/version-notify.js.map +1 -0
  84. package/package.json +2 -2
  85. package/dist/auto-ui/bridge/openai-shim.d.ts +0 -20
  86. package/dist/auto-ui/bridge/openai-shim.d.ts.map +0 -1
  87. package/dist/auto-ui/bridge/openai-shim.js +0 -231
  88. package/dist/auto-ui/bridge/openai-shim.js.map +0 -1
  89. package/dist/auto-ui/bridge/photon-app.d.ts +0 -162
  90. package/dist/auto-ui/bridge/photon-app.d.ts.map +0 -1
  91. package/dist/auto-ui/bridge/photon-app.js +0 -460
  92. package/dist/auto-ui/bridge/photon-app.js.map +0 -1
  93. package/dist/auto-ui/daemon-tools.d.ts +0 -45
  94. package/dist/auto-ui/daemon-tools.d.ts.map +0 -1
  95. package/dist/auto-ui/daemon-tools.js +0 -581
  96. package/dist/auto-ui/daemon-tools.js.map +0 -1
  97. package/dist/auto-ui/design-system/index.d.ts +0 -21
  98. package/dist/auto-ui/design-system/index.d.ts.map +0 -1
  99. package/dist/auto-ui/design-system/index.js +0 -27
  100. package/dist/auto-ui/design-system/index.js.map +0 -1
  101. package/dist/auto-ui/design-system/transaction-ui.d.ts +0 -70
  102. package/dist/auto-ui/design-system/transaction-ui.d.ts.map +0 -1
  103. package/dist/auto-ui/design-system/transaction-ui.js +0 -982
  104. package/dist/auto-ui/design-system/transaction-ui.js.map +0 -1
  105. package/dist/auto-ui/playground-server.d.ts +0 -7
  106. package/dist/auto-ui/playground-server.d.ts.map +0 -1
  107. package/dist/auto-ui/playground-server.js +0 -840
  108. package/dist/auto-ui/playground-server.js.map +0 -1
  109. package/dist/auto-ui/rendering/components.d.ts +0 -29
  110. package/dist/auto-ui/rendering/components.d.ts.map +0 -1
  111. package/dist/auto-ui/rendering/components.js +0 -1341
  112. package/dist/auto-ui/rendering/components.js.map +0 -1
  113. package/dist/auto-ui/rendering/field-analyzer.d.ts +0 -104
  114. package/dist/auto-ui/rendering/field-analyzer.d.ts.map +0 -1
  115. package/dist/auto-ui/rendering/field-analyzer.js +0 -447
  116. package/dist/auto-ui/rendering/field-analyzer.js.map +0 -1
  117. package/dist/auto-ui/rendering/field-renderers.d.ts +0 -64
  118. package/dist/auto-ui/rendering/field-renderers.d.ts.map +0 -1
  119. package/dist/auto-ui/rendering/field-renderers.js +0 -317
  120. package/dist/auto-ui/rendering/field-renderers.js.map +0 -1
  121. package/dist/auto-ui/rendering/index.d.ts +0 -28
  122. package/dist/auto-ui/rendering/index.d.ts.map +0 -1
  123. package/dist/auto-ui/rendering/index.js +0 -60
  124. package/dist/auto-ui/rendering/index.js.map +0 -1
  125. package/dist/auto-ui/rendering/layout-selector.d.ts +0 -60
  126. package/dist/auto-ui/rendering/layout-selector.d.ts.map +0 -1
  127. package/dist/auto-ui/rendering/layout-selector.js +0 -476
  128. package/dist/auto-ui/rendering/layout-selector.js.map +0 -1
  129. package/dist/markdown-utils.d.ts +0 -8
  130. package/dist/markdown-utils.d.ts.map +0 -1
  131. package/dist/markdown-utils.js +0 -64
  132. package/dist/markdown-utils.js.map +0 -1
  133. package/dist/mcp-client.d.ts +0 -9
  134. package/dist/mcp-client.d.ts.map +0 -1
  135. package/dist/mcp-client.js +0 -11
  136. package/dist/mcp-client.js.map +0 -1
  137. package/dist/mcp-elicitation.d.ts +0 -32
  138. package/dist/mcp-elicitation.d.ts.map +0 -1
  139. package/dist/mcp-elicitation.js +0 -26
  140. package/dist/mcp-elicitation.js.map +0 -1
  141. package/dist/photons/builder-compass.photon.d.ts +0 -167
  142. package/dist/photons/builder-compass.photon.d.ts.map +0 -1
  143. package/dist/photons/builder-compass.photon.js +0 -816
  144. package/dist/photons/builder-compass.photon.js.map +0 -1
  145. package/dist/photons/builder-compass.photon.ts +0 -1129
  146. package/dist/photons/docs/ui/docs.html +0 -441
  147. package/dist/photons/docs.photon.d.ts +0 -237
  148. package/dist/photons/docs.photon.d.ts.map +0 -1
  149. package/dist/photons/docs.photon.js +0 -483
  150. package/dist/photons/docs.photon.js.map +0 -1
  151. package/dist/photons/docs.photon.ts +0 -536
  152. package/dist/photons/slides.photon.d.ts +0 -212
  153. package/dist/photons/slides.photon.d.ts.map +0 -1
  154. package/dist/photons/slides.photon.js +0 -355
  155. package/dist/photons/slides.photon.js.map +0 -1
  156. package/dist/photons/slides.photon.ts +0 -370
  157. package/dist/photons/spreadsheet/ui/spreadsheet.html +0 -779
  158. package/dist/photons/spreadsheet.photon.d.ts +0 -554
  159. package/dist/photons/spreadsheet.photon.d.ts.map +0 -1
  160. package/dist/photons/spreadsheet.photon.js +0 -1050
  161. package/dist/photons/spreadsheet.photon.js.map +0 -1
  162. package/dist/photons/spreadsheet.photon.ts +0 -1239
  163. package/dist/photons/ui/builder-compass.html +0 -1199
  164. package/dist/photons/ui/builder-compass.photon.html +0 -380
  165. package/dist/security-scanner.d.ts +0 -52
  166. package/dist/security-scanner.d.ts.map +0 -1
  167. package/dist/security-scanner.js +0 -181
  168. package/dist/security-scanner.js.map +0 -1
  169. package/dist/shared/performance.d.ts +0 -65
  170. package/dist/shared/performance.d.ts.map +0 -1
  171. package/dist/shared/performance.js +0 -136
  172. package/dist/shared/performance.js.map +0 -1
@@ -2,9 +2,9 @@
2
2
  * Instance Store & Environment Store
3
3
  *
4
4
  * Manages:
5
- * - Instance naming → `photon use <photon> [name]` → ~/.photon/context/{photon}.json
6
- * - Environment vars → `photon set` → ~/.photon/env/{photon}.json
7
- * - Instance state paths → ~/.photon/state/{photon}/{instance}.json
5
+ * - Instance naming → .data/{ns}/{photon}/context.json
6
+ * - Environment vars → .data/{ns}/{photon}/env.json
7
+ * - Instance state paths → .data/{ns}/{photon}/state/{instance}/state.json
8
8
  *
9
9
  * Instance naming is a runtime concept. Every @stateful photon automatically
10
10
  * supports named instances — the runtime manages them. Clients (CLI, Beam,
@@ -13,6 +13,7 @@
13
13
  import * as fs from 'fs';
14
14
  import * as path from 'path';
15
15
  import * as os from 'os';
16
+ import { getPhotonContextPath, getPhotonEnvPath, getPhotonStatePath, getPhotonStateLogPath, getPhotonDataDir, getLegacyContextPath, getLegacyEnvPath, getLegacyStatePath, getLegacyStateLogPath, } from '@portel/photon-core';
16
17
  import { getDefaultContext } from './context.js';
17
18
  import { isNodeError, getErrorMessage } from './shared/error-handler.js';
18
19
  // ══════════════════════════════════════════════════════════════════════════════
@@ -23,15 +24,22 @@ export class InstanceStore {
23
24
  constructor(baseDir = getDefaultContext().baseDir) {
24
25
  this.baseDir = baseDir;
25
26
  }
26
- _path(photonName) {
27
- return path.join(this.baseDir, 'context', `${photonName}.json`);
27
+ _path(photonName, namespace) {
28
+ const ns = namespace || 'local';
29
+ const newPath = getPhotonContextPath(ns, photonName, this.baseDir);
30
+ if (!fs.existsSync(newPath)) {
31
+ const legacyPath = getLegacyContextPath(photonName, this.baseDir);
32
+ if (fs.existsSync(legacyPath))
33
+ return legacyPath;
34
+ }
35
+ return newPath;
28
36
  }
29
37
  /**
30
38
  * Get current instance name for a photon. Returns "" for default.
31
39
  */
32
- getCurrentInstance(photonName) {
40
+ getCurrentInstance(photonName, namespace) {
33
41
  try {
34
- const data = JSON.parse(fs.readFileSync(this._path(photonName), 'utf-8'));
42
+ const data = JSON.parse(fs.readFileSync(this._path(photonName, namespace), 'utf-8'));
35
43
  return data.instance || '';
36
44
  }
37
45
  catch (err) {
@@ -43,18 +51,32 @@ export class InstanceStore {
43
51
  }
44
52
  /**
45
53
  * Set current instance name for a photon. Pass "" for default.
54
+ * Always writes to new .data/ path.
46
55
  */
47
- setCurrentInstance(photonName, instance) {
48
- const filePath = this._path(photonName);
56
+ setCurrentInstance(photonName, instance, namespace) {
57
+ const ns = namespace || 'local';
58
+ const filePath = getPhotonContextPath(ns, photonName, this.baseDir);
49
59
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
50
60
  fs.writeFileSync(filePath, JSON.stringify({ instance }, null, 2));
51
61
  }
52
62
  /**
53
- * List all instances by scanning the state directory.
54
- * Checks both legacy state dir and new namespace-based .state/ dirs.
63
+ * List all instances by scanning state directories.
64
+ * Checks .data/ path first, then legacy paths.
55
65
  */
56
- listInstances(photonName, photonFilePath) {
66
+ listInstances(photonName, photonFilePath, namespace) {
57
67
  const instances = new Set();
68
+ const ns = namespace || 'local';
69
+ // New .data/ state dir
70
+ const dataStateDir = path.join(getPhotonDataDir(ns, photonName, this.baseDir), 'state');
71
+ try {
72
+ for (const entry of fs.readdirSync(dataStateDir, { withFileTypes: true })) {
73
+ if (entry.isDirectory())
74
+ instances.add(entry.name);
75
+ }
76
+ }
77
+ catch {
78
+ // .data/ state dir doesn't exist yet
79
+ }
58
80
  // Legacy state dir: ~/.photon/state/{photon}/
59
81
  const legacyStateDir = path.join(this.baseDir, 'state', photonName);
60
82
  try {
@@ -68,59 +90,83 @@ export class InstanceStore {
68
90
  console.warn(`[photon] Cannot read instances for ${photonName}: ${getErrorMessage(err)}`);
69
91
  }
70
92
  }
71
- // Namespace-aware state dir: <dir>/<photonName>/.state/
93
+ // Old namespace-aware .state/ dir (pre-.data/ consolidation)
72
94
  if (photonFilePath) {
73
95
  const dir = path.dirname(photonFilePath);
74
96
  const baseName = path.basename(photonFilePath).replace(/\.photon\.(ts|js)$/, '');
75
97
  const nsStateDir = path.join(dir, baseName, '.state');
76
98
  try {
77
99
  for (const entry of fs.readdirSync(nsStateDir, { withFileTypes: true })) {
78
- if (entry.isDirectory()) {
79
- // Each subdirectory is an instance
100
+ if (entry.isDirectory())
80
101
  instances.add(entry.name);
81
- }
82
102
  }
83
103
  }
84
104
  catch {
85
- // .state/ dir doesn't exist yet — normal
105
+ // .state/ dir doesn't exist
86
106
  }
87
107
  }
88
108
  return [...instances];
89
109
  }
90
110
  /**
91
111
  * List instances sorted by modification time (most recent first).
92
- * Also checks the legacy boards directory for photons like kanban.
93
112
  */
94
- listInstancesByMtime(photonName) {
95
- // Check content dirs first (actual data), then state dir (selection tracking).
96
- // The state dir is updated by _use (instance switching), so its mtime reflects
97
- // when an instance was last selected, not when content was last modified.
113
+ listInstancesByMtime(photonName, namespace) {
114
+ const ns = namespace || 'local';
115
+ // Check .data/ state dir first, then legacy dirs
98
116
  const candidateDirs = [
117
+ path.join(getPhotonDataDir(ns, photonName, this.baseDir), 'state'),
99
118
  path.join(this.baseDir, photonName, 'boards'),
100
119
  path.join(this.baseDir, 'state', photonName),
101
120
  ];
102
121
  for (const dir of candidateDirs) {
103
122
  try {
104
- const files = fs.readdirSync(dir);
105
- const jsonFiles = files.filter((f) => f.endsWith('.json') && !f.endsWith('.archive.jsonl'));
106
- if (jsonFiles.length === 0)
107
- continue;
108
- const withStat = jsonFiles.map((f) => {
109
- const stat = fs.statSync(path.join(dir, f));
110
- return {
111
- name: f.replace('.json', ''),
112
- mtime: stat.mtimeMs,
113
- createdAt: stat.birthtime.toISOString(),
114
- modifiedAt: stat.mtime.toISOString(),
115
- };
116
- });
117
- withStat.sort((a, b) => b.mtime - a.mtime);
118
- const instances = withStat.map((f) => f.name);
119
- const metadata = {};
120
- for (const entry of withStat) {
121
- metadata[entry.name] = { createdAt: entry.createdAt, modifiedAt: entry.modifiedAt };
123
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
124
+ // New layout: directories containing state.json
125
+ const dirEntries = entries.filter((e) => e.isDirectory());
126
+ if (dirEntries.length > 0) {
127
+ const withStat = dirEntries
128
+ .filter((e) => fs.existsSync(path.join(dir, e.name, 'state.json')))
129
+ .map((e) => {
130
+ const stat = fs.statSync(path.join(dir, e.name, 'state.json'));
131
+ return {
132
+ name: e.name,
133
+ mtime: stat.mtimeMs,
134
+ createdAt: stat.birthtime.toISOString(),
135
+ modifiedAt: stat.mtime.toISOString(),
136
+ };
137
+ });
138
+ if (withStat.length > 0) {
139
+ withStat.sort((a, b) => b.mtime - a.mtime);
140
+ const instances = withStat.map((f) => f.name);
141
+ const metadata = {};
142
+ for (const entry of withStat) {
143
+ metadata[entry.name] = { createdAt: entry.createdAt, modifiedAt: entry.modifiedAt };
144
+ }
145
+ return { instances, autoInstance: instances[0] || 'default', metadata };
146
+ }
147
+ }
148
+ // Legacy layout: .json files
149
+ const jsonFiles = entries.filter((e) => (e.isFile() || e.isSymbolicLink()) &&
150
+ e.name.endsWith('.json') &&
151
+ !e.name.endsWith('.archive.jsonl'));
152
+ if (jsonFiles.length > 0) {
153
+ const withStat = jsonFiles.map((f) => {
154
+ const stat = fs.statSync(path.join(dir, f.name));
155
+ return {
156
+ name: f.name.replace('.json', ''),
157
+ mtime: stat.mtimeMs,
158
+ createdAt: stat.birthtime.toISOString(),
159
+ modifiedAt: stat.mtime.toISOString(),
160
+ };
161
+ });
162
+ withStat.sort((a, b) => b.mtime - a.mtime);
163
+ const instances = withStat.map((f) => f.name);
164
+ const metadata = {};
165
+ for (const entry of withStat) {
166
+ metadata[entry.name] = { createdAt: entry.createdAt, modifiedAt: entry.modifiedAt };
167
+ }
168
+ return { instances, autoInstance: instances[0] || 'default', metadata };
122
169
  }
123
- return { instances, autoInstance: instances[0] || 'default', metadata };
124
170
  }
125
171
  catch {
126
172
  // Dir doesn't exist, try next
@@ -143,9 +189,6 @@ export class CLISessionStore {
143
189
  }
144
190
  /**
145
191
  * Get a stable session key for the current terminal.
146
- * Uses the controlling terminal (TTY) name — consistent across subshells,
147
- * pipes, and $() command substitutions within the same terminal window.
148
- * Falls back to PPID for non-TTY environments.
149
192
  */
150
193
  static _getSessionKey() {
151
194
  try {
@@ -187,12 +230,19 @@ export class EnvStore {
187
230
  constructor(baseDir = getDefaultContext().baseDir) {
188
231
  this.baseDir = baseDir;
189
232
  }
190
- _path(photonName) {
191
- return path.join(this.baseDir, 'env', `${photonName}.json`);
233
+ _path(photonName, namespace) {
234
+ const ns = namespace || 'local';
235
+ const newPath = getPhotonEnvPath(ns, photonName, this.baseDir);
236
+ if (!fs.existsSync(newPath)) {
237
+ const legacyPath = getLegacyEnvPath(photonName, this.baseDir);
238
+ if (fs.existsSync(legacyPath))
239
+ return legacyPath;
240
+ }
241
+ return newPath;
192
242
  }
193
- read(photonName) {
243
+ read(photonName, namespace) {
194
244
  try {
195
- return JSON.parse(fs.readFileSync(this._path(photonName), 'utf-8'));
245
+ return JSON.parse(fs.readFileSync(this._path(photonName, namespace), 'utf-8'));
196
246
  }
197
247
  catch (err) {
198
248
  if (isNodeError(err, 'ENOENT'))
@@ -201,28 +251,31 @@ export class EnvStore {
201
251
  return {};
202
252
  }
203
253
  }
204
- write(photonName, values) {
205
- const filePath = this._path(photonName);
254
+ /**
255
+ * Write env vars. Always writes to new .data/ path.
256
+ */
257
+ write(photonName, values, namespace) {
258
+ const ns = namespace || 'local';
259
+ const filePath = getPhotonEnvPath(ns, photonName, this.baseDir);
206
260
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
207
- const existing = this.read(photonName);
261
+ const existing = this.read(photonName, namespace);
208
262
  const merged = { ...existing, ...values };
209
263
  fs.writeFileSync(filePath, JSON.stringify(merged, null, 2));
210
264
  }
211
265
  /**
212
266
  * Get the value of a specific env param.
213
- * Checks stored values first, then process.env with the given envVarName.
214
267
  */
215
- resolve(photonName, paramName, envVarName) {
216
- const stored = this.read(photonName);
268
+ resolve(photonName, paramName, envVarName, namespace) {
269
+ const stored = this.read(photonName, namespace);
217
270
  if (stored[paramName] !== undefined)
218
271
  return stored[paramName];
219
272
  return process.env[envVarName];
220
273
  }
221
274
  /**
222
- * Get masked values for display (hide middle of strings).
275
+ * Get masked values for display.
223
276
  */
224
- getMasked(photonName) {
225
- const values = this.read(photonName);
277
+ getMasked(photonName, namespace) {
278
+ const values = this.read(photonName, namespace);
226
279
  const masked = {};
227
280
  for (const [key, val] of Object.entries(values)) {
228
281
  if (val.length > 6) {
@@ -236,60 +289,57 @@ export class EnvStore {
236
289
  }
237
290
  }
238
291
  // ══════════════════════════════════════════════════════════════════════════════
239
- // Instance State Path
292
+ // Instance State Path — resolves to .data/ with legacy fallback
240
293
  // ══════════════════════════════════════════════════════════════════════════════
241
294
  /**
242
295
  * Get the state file path for a photon instance.
243
- *
244
- * When photonFilePath is provided (namespace-aware), resolves to:
245
- * <dir>/<photonName>/.state/<instance>/state.json
246
- * Otherwise (legacy), resolves to:
247
- * ~/.photon/state/{photon}/{instance}.json
248
- *
249
- * Falls back to legacy path if the new path doesn't exist yet but legacy does.
296
+ * New: .data/{ns}/{photon}/state/{instance}/state.json
297
+ * Falls back to legacy paths if new path doesn't exist yet.
250
298
  */
251
- export function getInstanceStatePath(photonName, instance, baseDir, photonFilePath) {
299
+ export function getInstanceStatePath(photonName, instance, baseDir, photonFilePath, namespace) {
252
300
  const name = instance || 'default';
253
- if (photonFilePath) {
254
- // Namespace-aware path: <dir>/<photonName>/.state/<instance>/state.json
255
- const dir = path.dirname(photonFilePath);
256
- const photonBaseName = path.basename(photonFilePath).replace(/\.photon\.(ts|js)$/, '');
257
- const newPath = path.join(dir, photonBaseName, '.state', name, 'state.json');
258
- // Check if legacy path has existing data to migrate from
259
- const legacyDir = baseDir || getDefaultContext().baseDir;
260
- const legacyPath = path.join(legacyDir, 'state', photonName, `${name}.json`);
261
- if (!fs.existsSync(path.dirname(newPath)) && fs.existsSync(legacyPath)) {
262
- return legacyPath; // Use legacy path until migration
301
+ const ns = namespace || 'local';
302
+ const base = baseDir || getDefaultContext().baseDir;
303
+ const newPath = getPhotonStatePath(ns, photonName, name, base);
304
+ // Check legacy paths in order of preference
305
+ if (!fs.existsSync(path.dirname(newPath))) {
306
+ // Old namespace-aware: <dir>/<photonName>/.state/<instance>/state.json
307
+ if (photonFilePath) {
308
+ const dir = path.dirname(photonFilePath);
309
+ const photonBaseName = path.basename(photonFilePath).replace(/\.photon\.(ts|js)$/, '');
310
+ const oldNsPath = path.join(dir, photonBaseName, '.state', name, 'state.json');
311
+ if (fs.existsSync(oldNsPath))
312
+ return oldNsPath;
263
313
  }
264
- return newPath;
314
+ // Legacy flat: ~/.photon/state/{photon}/{instance}.json
315
+ const legacyPath = getLegacyStatePath(photonName, name, base);
316
+ if (fs.existsSync(legacyPath))
317
+ return legacyPath;
265
318
  }
266
- // Legacy path
267
- const dir = baseDir || getDefaultContext().baseDir;
268
- return path.join(dir, 'state', photonName, `${name}.json`);
319
+ return newPath;
269
320
  }
270
321
  /**
271
322
  * Get the event log path for a photon instance.
272
- *
273
- * When photonFilePath is provided (namespace-aware), resolves to:
274
- * <dir>/<photonName>/.state/<instance>/state.log
275
- * Otherwise (legacy), resolves to:
276
- * ~/.photon/state/{photon}/{instance}.log
323
+ * New: .data/{ns}/{photon}/state/{instance}/state.log
277
324
  */
278
- export function getInstanceLogPath(photonName, instance, baseDir, photonFilePath) {
325
+ export function getInstanceLogPath(photonName, instance, baseDir, photonFilePath, namespace) {
279
326
  const name = instance || 'default';
280
- if (photonFilePath) {
281
- const dir = path.dirname(photonFilePath);
282
- const photonBaseName = path.basename(photonFilePath).replace(/\.photon\.(ts|js)$/, '');
283
- const newPath = path.join(dir, photonBaseName, '.state', name, 'state.log');
284
- const legacyDir = baseDir || getDefaultContext().baseDir;
285
- const legacyPath = path.join(legacyDir, 'state', photonName, `${name}.log`);
286
- if (!fs.existsSync(path.dirname(newPath)) && fs.existsSync(legacyPath)) {
287
- return legacyPath;
327
+ const ns = namespace || 'local';
328
+ const base = baseDir || getDefaultContext().baseDir;
329
+ const newPath = getPhotonStateLogPath(ns, photonName, name, base);
330
+ if (!fs.existsSync(path.dirname(newPath))) {
331
+ if (photonFilePath) {
332
+ const dir = path.dirname(photonFilePath);
333
+ const photonBaseName = path.basename(photonFilePath).replace(/\.photon\.(ts|js)$/, '');
334
+ const oldNsPath = path.join(dir, photonBaseName, '.state', name, 'state.log');
335
+ if (fs.existsSync(oldNsPath))
336
+ return oldNsPath;
288
337
  }
289
- return newPath;
338
+ const legacyPath = getLegacyStateLogPath(photonName, name, base);
339
+ if (fs.existsSync(legacyPath))
340
+ return legacyPath;
290
341
  }
291
- const dir = baseDir || getDefaultContext().baseDir;
292
- return path.join(dir, 'state', photonName, `${name}.log`);
342
+ return newPath;
293
343
  }
294
344
  export function getEnvParams(params) {
295
345
  return params.filter((p) => p.isPrimitive && !p.hasDefault);
@@ -1 +1 @@
1
- {"version":3,"file":"context-store.js","sourceRoot":"","sources":["../src/context-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-store.js","sourceRoot":"","sources":["../src/context-store.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -5,29 +5,34 @@
5
5
  * process.env.PHOTON_DIR, and per-constructor baseDir parameters.
6
6
  *
7
7
  * Design:
8
- * - socketPath/pidFile/logFile ALWAYS resolve to ~/.photon/ (one global daemon)
9
- * - baseDir/stateDir/cacheDir/configFile respect PHOTON_DIR env var overrides
8
+ * - All runtime data lives under {baseDir}/.data/
9
+ * - Daemon socket/pid/log ALWAYS resolve to ~/.photon/.data/ (one global daemon)
10
+ * - baseDir/dataDir/cacheDir/configFile respect PHOTON_DIR env var overrides
10
11
  * - Immutable after creation — no runtime mutations
11
12
  */
12
13
  export interface PhotonContext {
13
14
  /** Base directory for photon files (~/.photon or PHOTON_DIR override) */
14
15
  readonly baseDir: string;
15
- /** State directory (baseDir/state) */
16
- readonly stateDir: string;
17
- /** Cache directory (baseDir/.cache) */
16
+ /** Root of all runtime data (baseDir/.data) */
17
+ readonly dataDir: string;
18
+ /** Cache directory (baseDir/.data/.cache) */
18
19
  readonly cacheDir: string;
19
- /** Config file path (baseDir/config.json) */
20
+ /** Config file path (baseDir/config.json) — committable, not inside .data */
20
21
  readonly configFile: string;
21
- /** Daemon socket — ALWAYS ~/.photon/daemon.sock (global daemon) */
22
+ /** Daemon socket — ALWAYS ~/.photon/.data/daemon.sock (global daemon) */
22
23
  readonly socketPath: string;
23
- /** Daemon PID file — ALWAYS ~/.photon/daemon.pid */
24
+ /** Daemon PID file — ALWAYS ~/.photon/.data/daemon.pid */
24
25
  readonly pidFile: string;
25
- /** Daemon log file — ALWAYS ~/.photon/daemon.log */
26
+ /** Daemon log file — ALWAYS ~/.photon/.data/daemon.log */
26
27
  readonly logFile: string;
28
+ /**
29
+ * @deprecated Use dataDir instead. State is now per-photon inside .data/
30
+ */
31
+ readonly stateDir: string;
27
32
  }
28
33
  /**
29
34
  * Get the default PhotonContext.
30
- * Respects PHOTON_DIR env var; falls back to ~/.photon.
35
+ * Priority: cwd (if it contains .photon.ts files) > PHOTON_DIR env var > ~/.photon.
31
36
  *
32
37
  * Not cached — env var may change between calls (e.g. tests).
33
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAkBjD"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAiBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAwBjD"}
package/dist/context.js CHANGED
@@ -5,34 +5,58 @@
5
5
  * process.env.PHOTON_DIR, and per-constructor baseDir parameters.
6
6
  *
7
7
  * Design:
8
- * - socketPath/pidFile/logFile ALWAYS resolve to ~/.photon/ (one global daemon)
9
- * - baseDir/stateDir/cacheDir/configFile respect PHOTON_DIR env var overrides
8
+ * - All runtime data lives under {baseDir}/.data/
9
+ * - Daemon socket/pid/log ALWAYS resolve to ~/.photon/.data/ (one global daemon)
10
+ * - baseDir/dataDir/cacheDir/configFile respect PHOTON_DIR env var overrides
10
11
  * - Immutable after creation — no runtime mutations
11
12
  */
12
13
  import * as path from 'path';
13
14
  import * as os from 'os';
15
+ import * as fs from 'fs';
16
+ import { getDataRoot, getCacheDir, getDaemonSocketPath, getDaemonPidPath, getDaemonLogPath, } from '@portel/photon-core';
14
17
  /** Default photon directory: ~/.photon */
15
18
  const HOME_PHOTON_DIR = path.join(os.homedir(), '.photon');
19
+ /**
20
+ * Check if a directory contains .photon.ts files (is a marketplace or photon workspace).
21
+ */
22
+ function isPhotonDirectory(dir) {
23
+ try {
24
+ const entries = fs.readdirSync(dir);
25
+ return entries.some((e) => e.endsWith('.photon.ts'));
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
16
31
  /**
17
32
  * Get the default PhotonContext.
18
- * Respects PHOTON_DIR env var; falls back to ~/.photon.
33
+ * Priority: cwd (if it contains .photon.ts files) > PHOTON_DIR env var > ~/.photon.
19
34
  *
20
35
  * Not cached — env var may change between calls (e.g. tests).
21
36
  */
22
37
  export function getDefaultContext() {
23
- const dirOverride = process.env.PHOTON_DIR;
24
- const baseDir = dirOverride ? path.resolve(dirOverride) : HOME_PHOTON_DIR;
25
- const socketPath = process.platform === 'win32'
26
- ? '\\\\.\\pipe\\photon-daemon'
27
- : path.join(HOME_PHOTON_DIR, 'daemon.sock');
38
+ const cwd = process.cwd();
39
+ let baseDir;
40
+ if (isPhotonDirectory(cwd)) {
41
+ // cwd is a marketplace or photon workspace — use it and update env for downstream
42
+ baseDir = cwd;
43
+ process.env.PHOTON_DIR = cwd;
44
+ }
45
+ else if (process.env.PHOTON_DIR) {
46
+ baseDir = path.resolve(process.env.PHOTON_DIR);
47
+ }
48
+ else {
49
+ baseDir = HOME_PHOTON_DIR;
50
+ }
28
51
  return Object.freeze({
29
52
  baseDir,
30
- stateDir: path.join(baseDir, 'state'),
31
- cacheDir: path.join(baseDir, '.cache'),
53
+ dataDir: getDataRoot(baseDir),
54
+ stateDir: path.join(baseDir, 'state'), // legacy compat
55
+ cacheDir: getCacheDir(baseDir),
32
56
  configFile: path.join(baseDir, 'config.json'),
33
- socketPath,
34
- pidFile: path.join(HOME_PHOTON_DIR, 'daemon.pid'),
35
- logFile: path.join(HOME_PHOTON_DIR, 'daemon.log'),
57
+ socketPath: getDaemonSocketPath(),
58
+ pidFile: getDaemonPidPath(),
59
+ logFile: getDaemonLogPath(),
36
60
  });
37
61
  }
38
62
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAmBzB,0CAA0C;AAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAE1E,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACrC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACtC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC7C,UAAU;QACV,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;QACjD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;KAClD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAwB7B,0CAA0C;AAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE3D;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,OAAe,CAAC;IAEpB,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,kFAAkF;QAClF,OAAO,GAAG,GAAG,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,eAAe,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO;QACP,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;QAC7B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB;QACvD,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC;QAC9B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC7C,UAAU,EAAE,mBAAmB,EAAE;QACjC,OAAO,EAAE,gBAAgB,EAAE;QAC3B,OAAO,EAAE,gBAAgB,EAAE;KAC5B,CAAC,CAAC;AACL,CAAC"}
@@ -48,11 +48,13 @@ class InProcessBroker {
48
48
  handlers = new Map();
49
49
  async publish(message) {
50
50
  const channel = message.channel;
51
+ // Always forward to daemon socket subscribers (MCP servers, Beam SSE, etc.)
52
+ // This ensures events emitted outside of tool execution context (e.g., from
53
+ // polling loops, timers, event handlers) still reach cross-process subscribers.
54
+ publishToChannel(channel, message);
51
55
  const handlers = this.handlers.get(channel);
52
56
  if (!handlers || handlers.size === 0)
53
57
  return;
54
- // Also buffer for external subscribers (Beam SSE, etc.)
55
- bufferEvent(channel, message);
56
58
  for (const handler of handlers) {
57
59
  try {
58
60
  handler(message);