@portel/photon 1.32.1 → 1.32.3

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 (52) hide show
  1. package/README.md +8 -4
  2. package/dist/auto-ui/beam.d.ts.map +1 -1
  3. package/dist/auto-ui/beam.js +35 -4
  4. package/dist/auto-ui/beam.js.map +1 -1
  5. package/dist/auto-ui/bridge/index.js +1 -1
  6. package/dist/auto-ui/streamable-http-transport.d.ts +5 -0
  7. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
  8. package/dist/auto-ui/streamable-http-transport.js +402 -171
  9. package/dist/auto-ui/streamable-http-transport.js.map +1 -1
  10. package/dist/auto-ui/types.d.ts +34 -0
  11. package/dist/auto-ui/types.d.ts.map +1 -1
  12. package/dist/auto-ui/types.js +57 -0
  13. package/dist/auto-ui/types.js.map +1 -1
  14. package/dist/beam.bundle.js +2492 -1442
  15. package/dist/beam.bundle.js.map +4 -4
  16. package/dist/claude-code-plugin.js +9 -3
  17. package/dist/claude-code-plugin.js.map +1 -1
  18. package/dist/cli/commands/beam.d.ts.map +1 -1
  19. package/dist/cli/commands/beam.js +5 -0
  20. package/dist/cli/commands/beam.js.map +1 -1
  21. package/dist/context.d.ts.map +1 -1
  22. package/dist/context.js +12 -6
  23. package/dist/context.js.map +1 -1
  24. package/dist/daemon/client.d.ts.map +1 -1
  25. package/dist/daemon/client.js +165 -478
  26. package/dist/daemon/client.js.map +1 -1
  27. package/dist/daemon/manager.d.ts +1 -1
  28. package/dist/daemon/manager.d.ts.map +1 -1
  29. package/dist/daemon/manager.js +18 -19
  30. package/dist/daemon/manager.js.map +1 -1
  31. package/dist/daemon/server.js +61 -23
  32. package/dist/daemon/server.js.map +1 -1
  33. package/dist/loader.d.ts.map +1 -1
  34. package/dist/loader.js +19 -8
  35. package/dist/loader.js.map +1 -1
  36. package/dist/photons/marketplace.photon.d.ts.map +1 -1
  37. package/dist/photons/marketplace.photon.js +34 -7
  38. package/dist/photons/marketplace.photon.js.map +1 -1
  39. package/dist/photons/marketplace.photon.ts +35 -7
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +40 -6
  42. package/dist/server.js.map +1 -1
  43. package/dist/types/server-types.d.ts +2 -0
  44. package/dist/types/server-types.d.ts.map +1 -1
  45. package/dist/version-notify.d.ts +5 -0
  46. package/dist/version-notify.d.ts.map +1 -1
  47. package/dist/version-notify.js +57 -7
  48. package/dist/version-notify.js.map +1 -1
  49. package/dist/watcher.d.ts.map +1 -1
  50. package/dist/watcher.js +8 -3
  51. package/dist/watcher.js.map +1 -1
  52. package/package.json +89 -73
@@ -42,20 +42,70 @@ function isStale(cache) {
42
42
  const checkedAt = new Date(cache.checkedAt).getTime();
43
43
  return Date.now() - checkedAt > CACHE_TTL_MS;
44
44
  }
45
+ function parseSemver(version) {
46
+ const withoutBuild = version.split('+')[0];
47
+ const [corePart, prereleasePart] = withoutBuild.split('-', 2);
48
+ const parts = corePart.split('.').map((part) => Number(part));
49
+ return {
50
+ core: [
51
+ Number.isFinite(parts[0]) ? parts[0] : 0,
52
+ Number.isFinite(parts[1]) ? parts[1] : 0,
53
+ Number.isFinite(parts[2]) ? parts[2] : 0,
54
+ ],
55
+ prerelease: prereleasePart ? prereleasePart.split('.') : [],
56
+ };
57
+ }
58
+ function comparePrerelease(a, b) {
59
+ if (a.length === 0 && b.length === 0)
60
+ return 0;
61
+ if (a.length === 0)
62
+ return 1;
63
+ if (b.length === 0)
64
+ return -1;
65
+ const max = Math.max(a.length, b.length);
66
+ for (let i = 0; i < max; i++) {
67
+ const ai = a[i];
68
+ const bi = b[i];
69
+ if (ai === undefined)
70
+ return -1;
71
+ if (bi === undefined)
72
+ return 1;
73
+ const an = Number(ai);
74
+ const bn = Number(bi);
75
+ const aNumeric = Number.isInteger(an) && String(an) === ai;
76
+ const bNumeric = Number.isInteger(bn) && String(bn) === bi;
77
+ if (aNumeric && bNumeric) {
78
+ if (an > bn)
79
+ return 1;
80
+ if (an < bn)
81
+ return -1;
82
+ continue;
83
+ }
84
+ if (aNumeric)
85
+ return -1;
86
+ if (bNumeric)
87
+ return 1;
88
+ if (ai > bi)
89
+ return 1;
90
+ if (ai < bi)
91
+ return -1;
92
+ }
93
+ return 0;
94
+ }
45
95
  /**
46
- * Compare two semver strings.
96
+ * Compare two semver strings, ignoring build metadata.
47
97
  * Returns 1 if a > b, -1 if a < b, 0 if equal.
48
98
  */
49
- function compareSemver(a, b) {
50
- const pa = a.split('.').map(Number);
51
- const pb = b.split('.').map(Number);
99
+ export function compareSemver(a, b) {
100
+ const pa = parseSemver(a);
101
+ const pb = parseSemver(b);
52
102
  for (let i = 0; i < 3; i++) {
53
- if ((pa[i] || 0) > (pb[i] || 0))
103
+ if (pa.core[i] > pb.core[i])
54
104
  return 1;
55
- if ((pa[i] || 0) < (pb[i] || 0))
105
+ if (pa.core[i] < pb.core[i])
56
106
  return -1;
57
107
  }
58
- return 0;
108
+ return comparePrerelease(pa.prerelease, pb.prerelease);
59
109
  }
60
110
  /**
61
111
  * Spawn a detached background process that fetches the latest version
@@ -1 +1 @@
1
- {"version":3,"file":"version-notify.js","sourceRoot":"","sources":["../src/version-notify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-notify.js","sourceRoot":"","sources":["../src/version-notify.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAA0B,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAE1D,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAiBnE;;OAEG;IACH,KAAK;IAsCL;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACG,IAAI;CAaX"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAA0B,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAS1D,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAiBnE;;OAEG;IACH,KAAK;IAsCL;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACG,IAAI;CAaX"}
package/dist/watcher.js CHANGED
@@ -8,6 +8,11 @@ import * as path from 'path';
8
8
  import * as fs from 'fs';
9
9
  import { HotReloadDisabledError } from './server.js';
10
10
  import { createLogger } from './shared/logger.js';
11
+ const HOT_RELOAD_DEBOUNCE_MS = parseNonNegativeEnvInt('PHOTON_HOT_RELOAD_DEBOUNCE_MS', 1000);
12
+ function parseNonNegativeEnvInt(name, fallback) {
13
+ const parsed = Number(process.env[name]);
14
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;
15
+ }
11
16
  export class FileWatcher {
12
17
  watcher = null;
13
18
  server;
@@ -45,7 +50,7 @@ export class FileWatcher {
45
50
  persistent: true,
46
51
  ignoreInitial: true,
47
52
  awaitWriteFinish: {
48
- stabilityThreshold: 100,
53
+ stabilityThreshold: HOT_RELOAD_DEBOUNCE_MS,
49
54
  pollInterval: 50,
50
55
  },
51
56
  });
@@ -73,7 +78,7 @@ export class FileWatcher {
73
78
  displayPath = path.relative(path.dirname(this.assetFolderPath), changedPath);
74
79
  }
75
80
  this.logger.info(`File changed: ${displayPath}`);
76
- // Debounce rapid changes
81
+ // Trailing debounce: reload only after streamed writes/editor saves settle.
77
82
  if (this.reloadTimeout) {
78
83
  clearTimeout(this.reloadTimeout);
79
84
  }
@@ -93,7 +98,7 @@ export class FileWatcher {
93
98
  }
94
99
  }
95
100
  })();
96
- }, 200);
101
+ }, HOT_RELOAD_DEBOUNCE_MS);
97
102
  }
98
103
  /**
99
104
  * Stop watching
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@portel/photon",
3
- "version": "1.32.1",
3
+ "version": "1.32.3",
4
4
  "description": "You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.",
5
5
  "type": "module",
6
+ "packageManager": "bun@1.2.20",
6
7
  "main": "dist/index.js",
7
8
  "bin": {
8
9
  "photon": "bin/photon"
@@ -24,80 +25,83 @@
24
25
  "typecheck": "tsc --noEmit",
25
26
  "build:beam": "node scripts/build-beam.mjs",
26
27
  "watch:beam": "node scripts/build-beam.mjs --watch",
27
- "dev:beam": "npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)",
28
- "prepublishOnly": "node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam",
28
+ "dev:beam": "bun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)",
29
+ "prepublishOnly": "bun run verify:publish-version && node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}\" && bun run build && bun run build:beam",
29
30
  "test": "bash scripts/run-tests.sh",
30
- "test:chain": "npm run test:all",
31
- "test:all": "npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:byte-compat && npm run test:format-registry && npm run test:content-negotiation && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:cf-bindings && npm run test:cf-runtime && npm run test:cf-overrides && npm run test:cf-deploy && npm run test:cf-mcp-bearer && npm run test:readme",
32
- "test:daemon-watcher": "npx tsx tests/daemon-watcher.test.ts",
33
- "test:instance-drift": "npx tsx tests/instance-drift.test.ts",
34
- "test:photon-instance-manager": "npx vitest run tests/photon-instance-manager.test.ts",
35
- "test:cf-bindings": "npx vitest run tests/cf-bindings-parser.test.ts",
36
- "test:cf-runtime": "npx vitest run tests/cf-runtime-kv.test.ts",
37
- "test:cf-overrides": "npx vitest run tests/cf-overrides.test.ts",
38
- "test:cf-deploy": "npx vitest run tests/cf-deploy-toml.test.ts",
39
- "test:cf-mcp-bearer": "npx vitest run tests/cf-mcp-bearer.test.ts",
40
- "test:viewport-aware-proxy": "npx vitest run tests/viewport-aware-proxy.test.ts",
41
- "test:viewport-manager": "npx vitest run tests/viewport-manager.test.ts",
42
- "test:pagination-integration": "npx vitest run tests/pagination-integration.test.ts",
43
- "test:pagination-performance": "npx vitest run tests/pagination-performance.test.ts",
44
- "test:multi-client-pagination": "npm run build && npx tsx tests/multi-client-pagination.test.ts",
45
- "test:security": "npx tsx tests/security.test.ts",
46
- "test:zero-config": "npx tsx tests/zero-config.test.ts",
47
- "test:mcp-config": "npx tsx tests/mcp-configuration.test.ts",
48
- "test:coverage": "npm run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html npm run test:unit",
49
- "test:unit": "npx tsx tests/schema-extractor.test.ts && npx tsx tests/marketplace-manager.test.ts && npx tsx tests/loader.test.ts && npx tsx tests/loader.comprehensive.test.ts && npx tsx tests/server.test.ts && npx tsx tests/server.comprehensive.test.ts && npx tsx tests/cli-runner.test.ts && npx tsx tests/cli.comprehensive.test.ts && npx tsx tests/logger.test.ts && npx tsx tests/error-handler.test.ts && npx tsx tests/validation.test.ts && npx tsx tests/daemon-pubsub.test.ts && npx tsx tests/shared-utils.test.ts",
50
- "test:cli:comprehensive": "npx tsx tests/cli.comprehensive.test.ts",
51
- "test:loader:comprehensive": "npx tsx tests/loader.comprehensive.test.ts",
52
- "test:server:comprehensive": "npx tsx tests/server.comprehensive.test.ts",
53
- "test:daemon-pubsub": "npx tsx tests/daemon-pubsub.test.ts",
54
- "test:daemon-buffer": "npx tsx tests/daemon-event-buffer.test.ts",
55
- "test:bridge": "npm run test:bridge:generation && npm run test:bridge:protocol && npm run test:bridge:beam",
56
- "test:bridge:generation": "npx tsx tests/bridge/bridge-generation.test.ts",
57
- "test:bridge:protocol": "npx tsx tests/bridge/protocol.test.ts",
58
- "test:bridge:beam": "npx tsx tests/bridge/beam-integration.test.ts",
59
- "test:cli": "npx tsx tests/cli-runner.test.ts",
60
- "test:logger": "npx tsx tests/logger.test.ts",
61
- "test:error-handler": "npx tsx tests/error-handler.test.ts",
62
- "test:validation": "npx tsx tests/validation.test.ts",
63
- "test:smoke": "npx tsx tests/smoke.test.ts",
31
+ "test:chain": "bun run test:all",
32
+ "test:all": "bun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && bun run test:pagination-phase5 && bun run test:pagination-phase5c && bun run test:pagination-phase5d && bun run test:phase6a && bun run test:phase6b && bun run test:phase6c && bun run test:phase6d && bun run test:promises && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme",
33
+ "test:daemon-watcher": "tsx tests/daemon-watcher.test.ts",
34
+ "test:instance-drift": "tsx tests/instance-drift.test.ts",
35
+ "test:photon-instance-manager": "vitest run tests/photon-instance-manager.test.ts",
36
+ "test:cf-bindings": "vitest run tests/cf-bindings-parser.test.ts",
37
+ "test:cf-runtime": "vitest run tests/cf-runtime-kv.test.ts",
38
+ "test:cf-overrides": "vitest run tests/cf-overrides.test.ts",
39
+ "test:cf-deploy": "vitest run tests/cf-deploy-toml.test.ts",
40
+ "test:cf-mcp-bearer": "vitest run tests/cf-mcp-bearer.test.ts",
41
+ "test:viewport-aware-proxy": "vitest run tests/viewport-aware-proxy.test.ts",
42
+ "test:viewport-manager": "vitest run tests/viewport-manager.test.ts",
43
+ "test:pagination-integration": "vitest run tests/pagination-integration.test.ts",
44
+ "test:pagination-performance": "vitest run tests/pagination-performance.test.ts",
45
+ "test:multi-client-pagination": "bun run build && tsx tests/multi-client-pagination.test.ts",
46
+ "test:security": "tsx tests/security.test.ts",
47
+ "test:zero-config": "tsx tests/zero-config.test.ts",
48
+ "test:mcp-config": "tsx tests/mcp-configuration.test.ts",
49
+ "test:coverage": "bun run build && c8 --include='dist/**/*.js' --reporter=text --reporter=html bun run test:unit",
50
+ "test:unit": "tsx tests/schema-extractor.test.ts && tsx tests/marketplace-manager.test.ts && tsx tests/loader.test.ts && tsx tests/loader.comprehensive.test.ts && tsx tests/server.test.ts && tsx tests/server.comprehensive.test.ts && tsx tests/cli-runner.test.ts && tsx tests/cli.comprehensive.test.ts && tsx tests/logger.test.ts && tsx tests/error-handler.test.ts && tsx tests/validation.test.ts && tsx tests/daemon-pubsub.test.ts && tsx tests/shared-utils.test.ts",
51
+ "test:cli:comprehensive": "tsx tests/cli.comprehensive.test.ts",
52
+ "test:loader:comprehensive": "tsx tests/loader.comprehensive.test.ts",
53
+ "test:server:comprehensive": "tsx tests/server.comprehensive.test.ts",
54
+ "test:daemon-pubsub": "tsx tests/daemon-pubsub.test.ts",
55
+ "test:daemon-buffer": "tsx tests/daemon-event-buffer.test.ts",
56
+ "test:bridge": "bun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam",
57
+ "test:bridge:generation": "tsx tests/bridge/bridge-generation.test.ts",
58
+ "test:bridge:protocol": "tsx tests/bridge/protocol.test.ts",
59
+ "test:bridge:beam": "tsx tests/bridge/beam-integration.test.ts",
60
+ "test:cli": "tsx tests/cli-runner.test.ts",
61
+ "test:logger": "tsx tests/logger.test.ts",
62
+ "test:error-handler": "tsx tests/error-handler.test.ts",
63
+ "test:validation": "tsx tests/validation.test.ts",
64
+ "test:version-notify": "tsx tests/version-notify.test.ts",
65
+ "test:streamable-http": "tsx tests/streamable-http-transport.test.ts",
66
+ "test:smoke": "tsx tests/smoke.test.ts",
64
67
  "test:readme": "bash tests/readme-validation.sh",
65
- "test:schema": "npx tsx tests/schema-extractor.test.ts",
66
- "test:marketplace": "npx tsx tests/marketplace-manager.test.ts",
67
- "test:github-ref": "npx tsx tests/github-ref-install.test.ts",
68
- "test:loader": "npx tsx tests/loader.test.ts",
69
- "test:server": "npx tsx tests/server.test.ts",
70
- "test:integration": "npx tsx tests/integration.test.ts",
71
- "test:byte-compat": "RUN_E2E=1 npx vitest run tests/v128-byte-compat.test.ts",
72
- "test:format-registry": "npx vitest run tests/format-registry.test.ts",
73
- "test:content-negotiation": "RUN_E2E=1 npx vitest run tests/http-content-negotiation.test.ts",
74
- "test:ui-resources": "npx tsx tests/ui-resources.test.ts",
75
- "test:ui-rendering": "npx tsx --test tests/ui/result-rendering.test.ts",
76
- "test:client-adaptive": "npx tsx tests/client-adaptive.test.ts",
77
- "test:load": "npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts",
78
- "test:sqlite": "npm run build && npx tsx tests/sqlite.test.ts",
79
- "test:github": "npm run build && npx tsx tests/github-issues.integration.ts",
80
- "test:beam": "npm run build && npx tsx tests/beam/rendering.test.ts",
81
- "test:beam:regressions": "npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts",
82
- "test:e2e": "npm run build && npx playwright test",
83
- "test:e2e:ui": "npm run build && npx playwright test --ui",
84
- "test:visual": "npm run build && npm run build:beam && npx tsx tests/beam/visual/visual.test.ts",
85
- "test:contracts": "npx tsx tests/contract/format-coverage.test.ts && npx tsx tests/contract/schema-contract.test.ts",
86
- "test:a2ui": "npm run build && npx tsx tests/a2ui-mapper.test.ts && npx tsx tests/a2ui-e2e.test.ts && npx tsx tests/a2ui-renderer-script.test.ts",
87
- "test:dom": "npm run build && npm run build:beam && npx tsx tests/contract/dom-structure.test.ts",
88
- "test:promises": "npm run build && npm run build:beam && npx tsx tests/promises.test.ts",
68
+ "test:schema": "tsx tests/schema-extractor.test.ts",
69
+ "test:marketplace": "tsx tests/marketplace-manager.test.ts",
70
+ "test:github-ref": "tsx tests/github-ref-install.test.ts",
71
+ "test:loader": "tsx tests/loader.test.ts",
72
+ "test:server": "tsx tests/server.test.ts",
73
+ "test:integration": "tsx tests/integration.test.ts",
74
+ "test:byte-compat": "RUN_E2E=1 vitest run tests/v128-byte-compat.test.ts",
75
+ "test:format-registry": "vitest run tests/format-registry.test.ts",
76
+ "test:content-negotiation": "RUN_E2E=1 vitest run tests/http-content-negotiation.test.ts",
77
+ "test:ui-resources": "tsx tests/ui-resources.test.ts",
78
+ "test:ui-rendering": "tsx --test tests/ui/result-rendering.test.ts",
79
+ "test:client-adaptive": "tsx tests/client-adaptive.test.ts",
80
+ "test:load": "bun run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts",
81
+ "test:sqlite": "bun run build && tsx tests/sqlite.test.ts",
82
+ "test:github": "bun run build && tsx tests/github-issues.integration.ts",
83
+ "test:beam": "bun run build && tsx tests/beam/rendering.test.ts",
84
+ "test:beam:regressions": "bun run build && tsx tests/beam/beam-integration-regressions.test.ts",
85
+ "test:e2e": "bun run build && playwright test",
86
+ "test:e2e:ui": "bun run build && playwright test --ui",
87
+ "test:visual": "bun run build && bun run build:beam && tsx tests/beam/visual/visual.test.ts",
88
+ "test:contracts": "tsx tests/contract/format-coverage.test.ts && tsx tests/contract/schema-contract.test.ts",
89
+ "test:a2ui": "bun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts",
90
+ "test:dom": "bun run build && bun run build:beam && tsx tests/contract/dom-structure.test.ts",
91
+ "test:promises": "bun run build && bun run build:beam && tsx tests/promises.test.ts",
89
92
  "release": "release-it",
90
93
  "release:minor": "release-it minor",
91
94
  "release:major": "release-it major",
92
95
  "release:patch": "release-it patch",
93
96
  "release:dry": "release-it --dry-run",
94
- "test:pagination-phase5": "npm run build && npx tsx tests/pagination-phase5.test.ts",
95
- "test:pagination-phase5c": "npm run build && npx tsx tests/pagination-phase5c.test.ts",
96
- "test:pagination-phase5d": "npm run build && npx tsx tests/pagination-phase5d.test.ts",
97
- "test:phase6a": "npm run build && npx tsx tests/phase6a-service-worker.test.ts",
98
- "test:phase6b": "npm run build && npx tsx tests/phase6b-offline-state.test.ts",
99
- "test:phase6c": "npm run build && npx tsx tests/phase6c-offline-sync.test.ts",
100
- "test:phase6d": "npm run build && npx tsx tests/phase6d-integration.test.ts"
97
+ "test:pagination-phase5": "bun run build && tsx tests/pagination-phase5.test.ts",
98
+ "test:pagination-phase5c": "bun run build && tsx tests/pagination-phase5c.test.ts",
99
+ "test:pagination-phase5d": "bun run build && tsx tests/pagination-phase5d.test.ts",
100
+ "test:phase6a": "bun run build && tsx tests/phase6a-service-worker.test.ts",
101
+ "test:phase6b": "bun run build && tsx tests/phase6b-offline-state.test.ts",
102
+ "test:phase6c": "bun run build && tsx tests/phase6c-offline-sync.test.ts",
103
+ "test:phase6d": "bun run build && tsx tests/phase6d-integration.test.ts",
104
+ "verify:publish-version": "node scripts/verify-publish-version.mjs"
101
105
  },
102
106
  "keywords": [
103
107
  "mcp",
@@ -117,9 +121,9 @@
117
121
  "author": "Portel Dev",
118
122
  "license": "MIT",
119
123
  "dependencies": {
120
- "@chenglou/pretext": "^0.0.3",
124
+ "@chenglou/pretext": "^0.0.7",
121
125
  "@modelcontextprotocol/ext-apps": "^1.0.1",
122
- "@modelcontextprotocol/sdk": "^1.25.2",
126
+ "@modelcontextprotocol/sdk": "^1.29.0",
123
127
  "@portel/cli": "^1.1.0",
124
128
  "@portel/photon-core": "^2.27.0",
125
129
  "boxen": "^8.0.1",
@@ -159,9 +163,9 @@
159
163
  "autocannon": "^8.0.0",
160
164
  "c8": "^11.0.0",
161
165
  "codemirror": "^6.0.2",
162
- "eslint": "^10.0.1",
166
+ "eslint": "^10.3.0",
163
167
  "eslint-config-prettier": "^10.1.8",
164
- "knip": "^5.85.0",
168
+ "knip": "^6.13.1",
165
169
  "lit": "^3.3.2",
166
170
  "openapi-types": "^12.1.3",
167
171
  "playwright": "^1.57.0",
@@ -172,7 +176,19 @@
172
176
  "vitest": "^4.1.5"
173
177
  },
174
178
  "overrides": {
175
- "minimatch": "^10.2.1"
179
+ "@hono/node-server": "^1.19.13",
180
+ "basic-ftp": "^6.0.1",
181
+ "brace-expansion": "^5.0.6",
182
+ "defu": "^6.1.7",
183
+ "express-rate-limit": "^8.2.2",
184
+ "fast-uri": "^3.1.2",
185
+ "flatted": "^3.4.2",
186
+ "handlebars": "^4.7.9",
187
+ "hono": "^4.12.18",
188
+ "ip-address": "^10.2.0",
189
+ "minimatch": "^10.2.1",
190
+ "path-to-regexp": "^8.4.2",
191
+ "picomatch": "^4.0.4"
176
192
  },
177
193
  "engines": {
178
194
  "node": ">=20.0.0",