@portel/photon 1.23.0 → 1.24.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/README.md +66 -0
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +262 -18
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/beam.bundle.js +58287 -56177
- package/dist/beam.bundle.js.map +4 -4
- package/dist/capability-negotiator.d.ts +9 -0
- package/dist/capability-negotiator.d.ts.map +1 -1
- package/dist/capability-negotiator.js +14 -0
- package/dist/capability-negotiator.js.map +1 -1
- package/dist/cli/commands/claim.d.ts +17 -0
- package/dist/cli/commands/claim.d.ts.map +1 -0
- package/dist/cli/commands/claim.js +124 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +2 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/daemon/claims.d.ts +108 -0
- package/dist/daemon/claims.d.ts.map +1 -0
- package/dist/daemon/claims.js +245 -0
- package/dist/daemon/claims.js.map +1 -0
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +15 -29
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/cron.d.ts +36 -0
- package/dist/daemon/cron.d.ts.map +1 -0
- package/dist/daemon/cron.js +216 -0
- package/dist/daemon/cron.js.map +1 -0
- package/dist/daemon/schedule-loader.d.ts +76 -0
- package/dist/daemon/schedule-loader.d.ts.map +1 -0
- package/dist/daemon/schedule-loader.js +124 -0
- package/dist/daemon/schedule-loader.js.map +1 -0
- package/dist/daemon/server.js +76 -226
- package/dist/daemon/server.js.map +1 -1
- package/dist/deploy/cloudflare.d.ts.map +1 -1
- package/dist/deploy/cloudflare.js +68 -3
- package/dist/deploy/cloudflare.js.map +1 -1
- package/dist/loader.d.ts +22 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +162 -7
- package/dist/loader.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +17 -0
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +50 -1
- package/dist/server.js.map +1 -1
- package/dist/shared/memory-sqlite.d.ts +37 -0
- package/dist/shared/memory-sqlite.d.ts.map +1 -0
- package/dist/shared/memory-sqlite.js +143 -0
- package/dist/shared/memory-sqlite.js.map +1 -0
- package/dist/shared/sqlite-runtime.d.ts.map +1 -1
- package/dist/shared/sqlite-runtime.js +12 -2
- package/dist/shared/sqlite-runtime.js.map +1 -1
- package/dist/tsx-compiler.d.ts.map +1 -1
- package/dist/tsx-compiler.js +18 -1
- package/dist/tsx-compiler.js.map +1 -1
- package/package.json +6 -2
- package/templates/cloudflare/worker.ts.template +44 -73
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsFH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4MxF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BnF"}
|
|
@@ -6,6 +6,7 @@ import * as path from 'path';
|
|
|
6
6
|
import { existsSync, readFileSync } from 'fs';
|
|
7
7
|
import { execSync, spawn } from 'child_process';
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
9
10
|
import { detectPM, detectRunner } from '../shared-utils.js';
|
|
10
11
|
import { SchemaExtractor } from '@portel/photon-core';
|
|
11
12
|
import { PHOTON_VERSION } from '../version.js';
|
|
@@ -32,6 +33,56 @@ function getPackageRoot() {
|
|
|
32
33
|
// Fallback: assume we're in dist/deploy/
|
|
33
34
|
return path.join(__dirname, '..', '..');
|
|
34
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a Cloudflare API token for wrangler, preferring an explicit
|
|
38
|
+
* CLOUDFLARE_API_TOKEN env var then falling back to the OAuth access token
|
|
39
|
+
* stored by the `cf` CLI at ~/.cf/config.toml. Returns undefined if no
|
|
40
|
+
* token is discoverable; callers fall through to the interactive
|
|
41
|
+
* `wrangler login` flow.
|
|
42
|
+
*
|
|
43
|
+
* The `cf` CLI's OAuth access token is accepted by the Cloudflare API as a
|
|
44
|
+
* Bearer credential, so wrangler recognizes it as a valid API token. This
|
|
45
|
+
* lets users who have authenticated once via `cf auth login` skip the
|
|
46
|
+
* separate `wrangler login` browser prompt.
|
|
47
|
+
*/
|
|
48
|
+
function resolveCloudflareApiToken() {
|
|
49
|
+
if (process.env.CLOUDFLARE_API_TOKEN) {
|
|
50
|
+
return { token: process.env.CLOUDFLARE_API_TOKEN, source: 'env' };
|
|
51
|
+
}
|
|
52
|
+
const cfConfigPath = path.join(homedir(), '.cf', 'config.toml');
|
|
53
|
+
if (!existsSync(cfConfigPath))
|
|
54
|
+
return null;
|
|
55
|
+
// `cf auth whoami` has the side effect of refreshing an expired OAuth
|
|
56
|
+
// access token on disk using the stored refresh token. Run it silently
|
|
57
|
+
// first so wrangler receives a live token rather than an expired one.
|
|
58
|
+
// No error if `cf` is not installed; we fall through to reading whatever
|
|
59
|
+
// is on disk in that case.
|
|
60
|
+
try {
|
|
61
|
+
execSync('cf auth whoami', { stdio: 'pipe' });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// cf missing or refresh failed; try the on-disk token anyway.
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const toml = readFileSync(cfConfigPath, 'utf-8');
|
|
68
|
+
const match = toml.match(/^access_token\s*=\s*"([^"]+)"\s*$/m);
|
|
69
|
+
return match ? { token: match[1], source: 'cf-cli' } : null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build a subprocess env that includes the bridged Cloudflare API token
|
|
77
|
+
* when one is available. Callers use this when spawning wrangler so the
|
|
78
|
+
* token flows through without touching the parent process env.
|
|
79
|
+
*/
|
|
80
|
+
function wranglerEnv() {
|
|
81
|
+
const resolved = resolveCloudflareApiToken();
|
|
82
|
+
if (!resolved)
|
|
83
|
+
return process.env;
|
|
84
|
+
return { ...process.env, CLOUDFLARE_API_TOKEN: resolved.token };
|
|
85
|
+
}
|
|
35
86
|
export async function deployToCloudflare(options) {
|
|
36
87
|
const { photonPath, devMode = false, dryRun = false } = options;
|
|
37
88
|
// Resolve photon file
|
|
@@ -104,7 +155,7 @@ export async function deployToCloudflare(options) {
|
|
|
104
155
|
},
|
|
105
156
|
devDependencies: {
|
|
106
157
|
'@cloudflare/workers-types': '^4.0.0',
|
|
107
|
-
wrangler: '^
|
|
158
|
+
wrangler: '^4.0.0',
|
|
108
159
|
typescript: '^5.0.0',
|
|
109
160
|
},
|
|
110
161
|
};
|
|
@@ -145,10 +196,21 @@ export async function deployToCloudflare(options) {
|
|
|
145
196
|
logger.error('💡 Check your package manager installation and network connection');
|
|
146
197
|
throw new Error(`Dependency installation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
147
198
|
}
|
|
148
|
-
// Check for wrangler authentication
|
|
199
|
+
// Check for wrangler authentication. If an OAuth token is available from
|
|
200
|
+
// the `cf` CLI, log that we're bridging it so the user sees why the
|
|
201
|
+
// interactive `wrangler login` prompt was skipped.
|
|
149
202
|
logger.info('Checking Cloudflare authentication...');
|
|
203
|
+
const resolvedToken = resolveCloudflareApiToken();
|
|
204
|
+
if (resolvedToken?.source === 'cf-cli') {
|
|
205
|
+
logger.info('Using OAuth token from ~/.cf/config.toml for wrangler authentication');
|
|
206
|
+
}
|
|
207
|
+
const envForWrangler = wranglerEnv();
|
|
150
208
|
try {
|
|
151
|
-
execSync(`${detectRunner()} wrangler whoami`, {
|
|
209
|
+
execSync(`${detectRunner()} wrangler whoami`, {
|
|
210
|
+
cwd: outputDir,
|
|
211
|
+
stdio: 'pipe',
|
|
212
|
+
env: envForWrangler,
|
|
213
|
+
});
|
|
152
214
|
}
|
|
153
215
|
catch {
|
|
154
216
|
logger.warn('Not logged in to Cloudflare');
|
|
@@ -157,6 +219,7 @@ export async function deployToCloudflare(options) {
|
|
|
157
219
|
const login = spawn(detectRunner(), ['wrangler', 'login'], {
|
|
158
220
|
cwd: outputDir,
|
|
159
221
|
stdio: 'inherit',
|
|
222
|
+
env: envForWrangler,
|
|
160
223
|
});
|
|
161
224
|
await new Promise((resolve, reject) => {
|
|
162
225
|
login.on('close', (code) => {
|
|
@@ -172,6 +235,7 @@ export async function deployToCloudflare(options) {
|
|
|
172
235
|
const deploy = spawn(detectRunner(), ['wrangler', 'deploy'], {
|
|
173
236
|
cwd: outputDir,
|
|
174
237
|
stdio: 'inherit',
|
|
238
|
+
env: envForWrangler,
|
|
175
239
|
});
|
|
176
240
|
await new Promise((resolve, reject) => {
|
|
177
241
|
deploy.on('close', (code) => {
|
|
@@ -204,6 +268,7 @@ export async function devCloudflare(options) {
|
|
|
204
268
|
const dev = spawn(detectRunner(), ['wrangler', 'dev'], {
|
|
205
269
|
cwd: outputDir,
|
|
206
270
|
stdio: 'inherit',
|
|
271
|
+
env: wranglerEnv(),
|
|
207
272
|
});
|
|
208
273
|
await new Promise((resolve) => {
|
|
209
274
|
dev.on('close', () => resolve());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/deploy/cloudflare.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Loads a single .photon.ts file and extracts tools
|
|
5
5
|
*/
|
|
6
|
-
import { ConstructorParam, PhotonClass, PhotonClassExtended, type InputProvider, type OutputHandler, type MCPClientFactory, type CallerInfo } from '@portel/photon-core';
|
|
6
|
+
import { ConstructorParam, PhotonClass, PhotonClassExtended, type InputProvider, type OutputHandler, type SamplingProvider, type MCPClientFactory, type CallerInfo } from '@portel/photon-core';
|
|
7
7
|
import { Logger } from './shared/logger.js';
|
|
8
8
|
/**
|
|
9
9
|
* Clear any intermediate render output before printing final results.
|
|
@@ -34,6 +34,14 @@ export declare class PhotonLoader {
|
|
|
34
34
|
private marketplaceManager?;
|
|
35
35
|
private marketplaceManagerPromise?;
|
|
36
36
|
private logger;
|
|
37
|
+
/**
|
|
38
|
+
* Per-instance call queue. Two tool invocations targeting the same photon
|
|
39
|
+
* instance are serialized: the second starts only after the first returns.
|
|
40
|
+
* Prevents lost-update and read-after-write races between methods that share
|
|
41
|
+
* state via `this.memory` or instance fields. Keyed on the instance object
|
|
42
|
+
* via WeakMap so hot-reload drops the queue automatically.
|
|
43
|
+
*/
|
|
44
|
+
private _instanceCallTails;
|
|
37
45
|
/** Per-middleware-name state stores (caches, throttle windows, queues, etc.) */
|
|
38
46
|
private middlewareStates;
|
|
39
47
|
/** Per-photon custom middleware definitions discovered from module exports */
|
|
@@ -322,10 +330,23 @@ export declare class PhotonLoader {
|
|
|
322
330
|
resumeRunId?: string;
|
|
323
331
|
outputHandler?: OutputHandler;
|
|
324
332
|
inputProvider?: InputProvider;
|
|
333
|
+
/**
|
|
334
|
+
* MCP sampling provider — the runtime attaches this when the
|
|
335
|
+
* client supports `sampling`. Photons read it from the execution
|
|
336
|
+
* context via `this.sample()`.
|
|
337
|
+
*/
|
|
338
|
+
samplingProvider?: SamplingProvider;
|
|
325
339
|
caller?: CallerInfo;
|
|
326
340
|
traceId?: string;
|
|
327
341
|
parentTraceparent?: string;
|
|
328
342
|
}): Promise<any>;
|
|
343
|
+
/**
|
|
344
|
+
* Serialize calls targeting the same photon instance. Concurrent callers
|
|
345
|
+
* queue behind the current in-flight call; each invocation gets an exclusive
|
|
346
|
+
* slot for the duration of its method body (including all awaits), so two
|
|
347
|
+
* methods that touch shared state via `this.memory` cannot interleave.
|
|
348
|
+
*/
|
|
349
|
+
private _withInstanceGate;
|
|
329
350
|
private _executeToolInner;
|
|
330
351
|
private normalizeNestedParamsTool;
|
|
331
352
|
/**
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH,OAAO,EAGL,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EAYnB,KAAK,aAAa,EAClB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.js
CHANGED
|
@@ -164,6 +164,68 @@ function injectEmitHelpers(instance) {
|
|
|
164
164
|
function detectEmitHelperUsage(source) {
|
|
165
165
|
return /this\.(toast|log|status|progress|thinking)\s*\(/.test(source);
|
|
166
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Always-inject `this.sample`, `this.confirm`, and `this.elicit` on plain
|
|
169
|
+
* classes. Each pulls its provider out of the ALS execution context
|
|
170
|
+
* (set by the loader when it invokes a tool). User-defined methods on
|
|
171
|
+
* the class win — these wrappers only fill in when absent.
|
|
172
|
+
*
|
|
173
|
+
* Mirrors the Photon base class implementations in photon-core/base.ts,
|
|
174
|
+
* so a plain class and a class that extends Photon behave identically.
|
|
175
|
+
*/
|
|
176
|
+
function injectSamplingAndElicitation(instance) {
|
|
177
|
+
if (!instance.confirm) {
|
|
178
|
+
instance.confirm = async (question) => {
|
|
179
|
+
const store = executionContext.getStore();
|
|
180
|
+
if (!store?.inputProvider) {
|
|
181
|
+
throw new Error('this.confirm() requires a connected MCP client that supports ' +
|
|
182
|
+
'elicitation. None is attached to the current invocation.');
|
|
183
|
+
}
|
|
184
|
+
const result = await store.inputProvider({
|
|
185
|
+
ask: 'confirm',
|
|
186
|
+
question,
|
|
187
|
+
message: question,
|
|
188
|
+
});
|
|
189
|
+
return Boolean(result);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
if (!instance.elicit) {
|
|
193
|
+
instance.elicit = async (params) => {
|
|
194
|
+
const store = executionContext.getStore();
|
|
195
|
+
if (!store?.inputProvider) {
|
|
196
|
+
throw new Error('this.elicit() requires a connected MCP client that supports ' +
|
|
197
|
+
'elicitation. None is attached to the current invocation.');
|
|
198
|
+
}
|
|
199
|
+
return await store.inputProvider(params);
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
if (!instance.sample) {
|
|
203
|
+
instance.sample = async (params) => {
|
|
204
|
+
const store = executionContext.getStore();
|
|
205
|
+
if (!store?.samplingProvider) {
|
|
206
|
+
throw new Error('this.sample() requires the connected MCP client to declare the ' +
|
|
207
|
+
'`sampling` capability. None is available in this invocation.');
|
|
208
|
+
}
|
|
209
|
+
if (!params.prompt && !params.messages?.length) {
|
|
210
|
+
throw new Error('this.sample() requires either `prompt` or `messages`.');
|
|
211
|
+
}
|
|
212
|
+
const messages = params.messages ?? [
|
|
213
|
+
{ role: 'user', content: { type: 'text', text: params.prompt } },
|
|
214
|
+
];
|
|
215
|
+
const result = await store.samplingProvider({
|
|
216
|
+
messages,
|
|
217
|
+
systemPrompt: params.systemPrompt,
|
|
218
|
+
maxTokens: params.maxTokens ?? 1024,
|
|
219
|
+
temperature: params.temperature,
|
|
220
|
+
modelPreferences: params.modelPreferences,
|
|
221
|
+
stopSequences: params.stopSequences,
|
|
222
|
+
includeContext: params.includeContext,
|
|
223
|
+
});
|
|
224
|
+
const first = Array.isArray(result.content) ? result.content[0] : result.content;
|
|
225
|
+
return first?.type === 'text' ? first.text : '';
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
167
229
|
/**
|
|
168
230
|
* Render a formatted value in the CLI using @portel/cli's formatOutput.
|
|
169
231
|
* Uses clear-and-replace semantics — each call overwrites the previous render.
|
|
@@ -230,6 +292,14 @@ export class PhotonLoader {
|
|
|
230
292
|
marketplaceManager;
|
|
231
293
|
marketplaceManagerPromise;
|
|
232
294
|
logger;
|
|
295
|
+
/**
|
|
296
|
+
* Per-instance call queue. Two tool invocations targeting the same photon
|
|
297
|
+
* instance are serialized: the second starts only after the first returns.
|
|
298
|
+
* Prevents lost-update and read-after-write races between methods that share
|
|
299
|
+
* state via `this.memory` or instance fields. Keyed on the instance object
|
|
300
|
+
* via WeakMap so hot-reload drops the queue automatically.
|
|
301
|
+
*/
|
|
302
|
+
_instanceCallTails = new WeakMap();
|
|
233
303
|
// ════════════════════════════════════════════════════════════════════════════
|
|
234
304
|
// MIDDLEWARE STATE
|
|
235
305
|
// ════════════════════════════════════════════════════════════════════════════
|
|
@@ -695,6 +765,31 @@ export class PhotonLoader {
|
|
|
695
765
|
instance.instanceName = options?.instanceName ?? '';
|
|
696
766
|
// Inject file path for storage()/assets() resolution
|
|
697
767
|
instance._photonFilePath = absolutePath;
|
|
768
|
+
// Inject schedule-unschedule hook so `this.schedule.cancel()` evicts
|
|
769
|
+
// the in-memory cron registration at the same time as unlinking
|
|
770
|
+
// the file. Prevents ghost schedule registrations — the scenario
|
|
771
|
+
// where a cancel + re-enable under the same name leaves the old
|
|
772
|
+
// cron firing in parallel with the new one until the next daemon
|
|
773
|
+
// restart. The hook is best-effort: if the daemon is unreachable
|
|
774
|
+
// the fire-time phantom-prune (daemon checks sourceFile before
|
|
775
|
+
// running) catches the ghost on its next tick.
|
|
776
|
+
const photonNameForSchedule = name;
|
|
777
|
+
const scheduleLogger = this.logger;
|
|
778
|
+
instance._scheduleUnscheduleHook = async (jobId) => {
|
|
779
|
+
try {
|
|
780
|
+
const { unscheduleJob } = await import('./daemon/client.js');
|
|
781
|
+
return await unscheduleJob(photonNameForSchedule, jobId);
|
|
782
|
+
}
|
|
783
|
+
catch (err) {
|
|
784
|
+
// Daemon unreachable or IPC failure — log loudly so operators
|
|
785
|
+
// notice. Phantom-prune (daemon checks sourceFile before
|
|
786
|
+
// running) still evicts the ghost on its next fire, but for
|
|
787
|
+
// low-frequency schedules that may be hours away. Returning
|
|
788
|
+
// false lets `schedule.cancel` surface the outcome too.
|
|
789
|
+
scheduleLogger.warn(`[schedule] failed to evict in-memory cron registration for ${photonNameForSchedule}:${jobId}`, { error: err instanceof Error ? err.message : String(err) });
|
|
790
|
+
return false;
|
|
791
|
+
}
|
|
792
|
+
};
|
|
698
793
|
// Inject this.shell — execSync wrapper with cwd defaulted to the
|
|
699
794
|
// photon's own folder. Shelling out from a photon method should run
|
|
700
795
|
// from where the photon lives, not the daemon's cwd, so that
|
|
@@ -866,8 +961,18 @@ export class PhotonLoader {
|
|
|
866
961
|
// Inject convenience helpers (render, toast, log, status, progress, thinking)
|
|
867
962
|
injectEmitHelpers(instance);
|
|
868
963
|
}
|
|
869
|
-
|
|
870
|
-
|
|
964
|
+
// Always-inject lazy memory provider. The getter is a pure closure
|
|
965
|
+
// that constructs MemoryProvider on first access — zero cost until
|
|
966
|
+
// used. Gating this on a regex (`detectCapabilities`) missed TS
|
|
967
|
+
// cast shapes with function-type parens like
|
|
968
|
+
// `(this as unknown as { memory: { set: (k: string) => void } })` —
|
|
969
|
+
// the classic TypeScript workaround when memory isn't on the
|
|
970
|
+
// declared class — and silently left `this.memory` undefined. That
|
|
971
|
+
// turned every `.memory.set(...)` call into a data-loss bug that
|
|
972
|
+
// only surfaced on daemon cold start.
|
|
973
|
+
// User-defined memory wins; `in` walks the prototype chain
|
|
974
|
+
// so Photon-base getters aren't silently shadowed.
|
|
975
|
+
if (!('memory' in instance)) {
|
|
871
976
|
const memoryBaseDir = this.baseDir;
|
|
872
977
|
Object.defineProperty(instance, 'memory', {
|
|
873
978
|
get() {
|
|
@@ -915,6 +1020,13 @@ export class PhotonLoader {
|
|
|
915
1020
|
return client;
|
|
916
1021
|
};
|
|
917
1022
|
}
|
|
1023
|
+
// Always-inject sample/confirm/elicit helpers. These read the
|
|
1024
|
+
// relevant provider from the ALS execution context the loader
|
|
1025
|
+
// populates when it invokes a tool. Injections are pure closures —
|
|
1026
|
+
// zero cost until the method uses them. Matches the always-inject
|
|
1027
|
+
// philosophy: detection-gate misses mean silent breakage, so don't
|
|
1028
|
+
// gate cheap capabilities. User-defined methods win.
|
|
1029
|
+
injectSamplingAndElicitation(instance);
|
|
918
1030
|
// Always-inject caller getter. The prototype check preserves any
|
|
919
1031
|
// user-defined getter on the class (e.g. Photon base class has its
|
|
920
1032
|
// own) so we don't clobber.
|
|
@@ -955,8 +1067,10 @@ export class PhotonLoader {
|
|
|
955
1067
|
},
|
|
956
1068
|
};
|
|
957
1069
|
}
|
|
958
|
-
|
|
959
|
-
|
|
1070
|
+
// Always-inject instance metadata. One file-stat call per load is
|
|
1071
|
+
// cheap and avoids the same detection-gate trap as memory. User-
|
|
1072
|
+
// defined instanceMeta on the class wins.
|
|
1073
|
+
if (!instance.instanceMeta) {
|
|
960
1074
|
const instanceName = options?.instanceName || 'default';
|
|
961
1075
|
const stateFile = getInstanceStatePath(name, instanceName, this.baseDir);
|
|
962
1076
|
try {
|
|
@@ -1359,7 +1473,8 @@ export class PhotonLoader {
|
|
|
1359
1473
|
// Inject convenience helpers (render, toast, log, status, progress, thinking)
|
|
1360
1474
|
injectEmitHelpers(instance);
|
|
1361
1475
|
}
|
|
1362
|
-
|
|
1476
|
+
// Always-inject memory (see primary load path for rationale).
|
|
1477
|
+
if (!('memory' in instance)) {
|
|
1363
1478
|
const memoryBaseDir = this.baseDir;
|
|
1364
1479
|
Object.defineProperty(instance, 'memory', {
|
|
1365
1480
|
get() {
|
|
@@ -1384,6 +1499,8 @@ export class PhotonLoader {
|
|
|
1384
1499
|
return instance._callHandler(target.slice(0, dotIndex), target.slice(dotIndex + 1), params, opts?.instance);
|
|
1385
1500
|
};
|
|
1386
1501
|
}
|
|
1502
|
+
// Always-inject sample/confirm/elicit (see primary load path).
|
|
1503
|
+
injectSamplingAndElicitation(instance);
|
|
1387
1504
|
}
|
|
1388
1505
|
// Channel event capability: inject on()/off()/_dispatch()/_matchesFilter()
|
|
1389
1506
|
// when source uses this._dispatch( — the universal channel dispatch pattern.
|
|
@@ -2902,7 +3019,7 @@ Run: photon mcp ${mcpName} --config
|
|
|
2902
3019
|
resolvedParentTraceparent = metaPeek.traceparent;
|
|
2903
3020
|
}
|
|
2904
3021
|
}
|
|
2905
|
-
|
|
3022
|
+
const run = () => runWithRequestContext({
|
|
2906
3023
|
photon: mcp.name,
|
|
2907
3024
|
tool: toolName,
|
|
2908
3025
|
traceId: options?.traceId,
|
|
@@ -2913,6 +3030,34 @@ Run: photon mcp ${mcpName} --config
|
|
|
2913
3030
|
...options,
|
|
2914
3031
|
parentTraceparent: resolvedParentTraceparent,
|
|
2915
3032
|
}));
|
|
3033
|
+
const gateKey = mcp.instance;
|
|
3034
|
+
if (!gateKey)
|
|
3035
|
+
return run();
|
|
3036
|
+
return this._withInstanceGate(gateKey, run);
|
|
3037
|
+
}
|
|
3038
|
+
/**
|
|
3039
|
+
* Serialize calls targeting the same photon instance. Concurrent callers
|
|
3040
|
+
* queue behind the current in-flight call; each invocation gets an exclusive
|
|
3041
|
+
* slot for the duration of its method body (including all awaits), so two
|
|
3042
|
+
* methods that touch shared state via `this.memory` cannot interleave.
|
|
3043
|
+
*/
|
|
3044
|
+
async _withInstanceGate(instance, fn) {
|
|
3045
|
+
const prev = this._instanceCallTails.get(instance) ?? Promise.resolve();
|
|
3046
|
+
let release;
|
|
3047
|
+
const tail = new Promise((r) => {
|
|
3048
|
+
release = r;
|
|
3049
|
+
});
|
|
3050
|
+
this._instanceCallTails.set(instance, tail);
|
|
3051
|
+
try {
|
|
3052
|
+
await prev;
|
|
3053
|
+
return await fn();
|
|
3054
|
+
}
|
|
3055
|
+
finally {
|
|
3056
|
+
release();
|
|
3057
|
+
if (this._instanceCallTails.get(instance) === tail) {
|
|
3058
|
+
this._instanceCallTails.delete(instance);
|
|
3059
|
+
}
|
|
3060
|
+
}
|
|
2916
3061
|
}
|
|
2917
3062
|
async _executeToolInner(mcp, toolName, parameters, options) {
|
|
2918
3063
|
// Start audit trail recording
|
|
@@ -3210,9 +3355,19 @@ Run: photon mcp ${mcpName} --config
|
|
|
3210
3355
|
}
|
|
3211
3356
|
let generatorFn = isStatic
|
|
3212
3357
|
? () => method.call(null, ...args)
|
|
3213
|
-
: () => executionContext.run(
|
|
3358
|
+
: () => executionContext.run(
|
|
3359
|
+
// inputProvider and samplingProvider are attached to the ALS
|
|
3360
|
+
// store so photon-core's `this.confirm()`, `this.elicit()`,
|
|
3361
|
+
// and `this.sample()` can find them without every method
|
|
3362
|
+
// having to accept runtime plumbing as an argument. The
|
|
3363
|
+
// @portel/cli ExecutionContext type doesn't declare these
|
|
3364
|
+
// optional fields, so the object is cast through `unknown`;
|
|
3365
|
+
// photon-core reads them back with matching casts.
|
|
3366
|
+
{
|
|
3214
3367
|
outputHandler: outputHandler,
|
|
3215
3368
|
caller: options?.caller,
|
|
3369
|
+
inputProvider,
|
|
3370
|
+
samplingProvider: options?.samplingProvider,
|
|
3216
3371
|
}, () => {
|
|
3217
3372
|
return method.call(mcp.instance, ...args);
|
|
3218
3373
|
});
|