@dharma-ai-labs/agent-fabric 0.2.109 → 0.2.111

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 (100) hide show
  1. package/README.md +41 -0
  2. package/dist/codexInboxSession.d.ts +1 -1
  3. package/dist/cooperativeInboxSession.d.ts +1 -1
  4. package/dist/demoDeviceTransport.d.ts +33 -0
  5. package/dist/demoDeviceTransport.d.ts.map +1 -0
  6. package/dist/demoDeviceTransport.js +52 -0
  7. package/dist/demoDeviceTransport.js.map +1 -0
  8. package/dist/demoDeviceTransport.test.d.ts +2 -0
  9. package/dist/demoDeviceTransport.test.d.ts.map +1 -0
  10. package/dist/demoDeviceTransport.test.js +178 -0
  11. package/dist/demoDeviceTransport.test.js.map +1 -0
  12. package/dist/demoEnrollment.d.ts +2 -1
  13. package/dist/demoEnrollment.d.ts.map +1 -1
  14. package/dist/demoEnrollment.js +99 -21
  15. package/dist/demoEnrollment.js.map +1 -1
  16. package/dist/demoEnrollment.test.js +288 -2
  17. package/dist/demoEnrollment.test.js.map +1 -1
  18. package/dist/demoPackage.js +1 -1
  19. package/dist/demoPackage.js.map +1 -1
  20. package/dist/demoSigningTrust.d.ts +24 -0
  21. package/dist/demoSigningTrust.d.ts.map +1 -0
  22. package/dist/demoSigningTrust.js +326 -0
  23. package/dist/demoSigningTrust.js.map +1 -0
  24. package/dist/demoSigningTrust.test.d.ts +2 -0
  25. package/dist/demoSigningTrust.test.d.ts.map +1 -0
  26. package/dist/demoSigningTrust.test.js +445 -0
  27. package/dist/demoSigningTrust.test.js.map +1 -0
  28. package/dist/demoSigningUpgradeProof.d.ts +52 -0
  29. package/dist/demoSigningUpgradeProof.d.ts.map +1 -0
  30. package/dist/demoSigningUpgradeProof.js +137 -0
  31. package/dist/demoSigningUpgradeProof.js.map +1 -0
  32. package/dist/demoSigningUpgradeProof.test.d.ts +2 -0
  33. package/dist/demoSigningUpgradeProof.test.d.ts.map +1 -0
  34. package/dist/demoSigningUpgradeProof.test.js +564 -0
  35. package/dist/demoSigningUpgradeProof.test.js.map +1 -0
  36. package/dist/demoSigningUpgradeSubmission.d.ts +21 -0
  37. package/dist/demoSigningUpgradeSubmission.d.ts.map +1 -0
  38. package/dist/demoSigningUpgradeSubmission.js +178 -0
  39. package/dist/demoSigningUpgradeSubmission.js.map +1 -0
  40. package/dist/demoSupervisor.d.ts.map +1 -1
  41. package/dist/demoSupervisor.js +2 -1
  42. package/dist/demoSupervisor.js.map +1 -1
  43. package/dist/demoSupervisor.test.js +35 -0
  44. package/dist/demoSupervisor.test.js.map +1 -1
  45. package/dist/demoTransportCommand.test.d.ts +2 -0
  46. package/dist/demoTransportCommand.test.d.ts.map +1 -0
  47. package/dist/demoTransportCommand.test.js +28 -0
  48. package/dist/demoTransportCommand.test.js.map +1 -0
  49. package/dist/demoTransportContinuity.d.ts +39 -0
  50. package/dist/demoTransportContinuity.d.ts.map +1 -0
  51. package/dist/demoTransportContinuity.js +82 -0
  52. package/dist/demoTransportContinuity.js.map +1 -0
  53. package/dist/demoTransportContinuity.test.d.ts +2 -0
  54. package/dist/demoTransportContinuity.test.d.ts.map +1 -0
  55. package/dist/demoTransportContinuity.test.js +145 -0
  56. package/dist/demoTransportContinuity.test.js.map +1 -0
  57. package/dist/demoTransportFetch.d.ts +12 -0
  58. package/dist/demoTransportFetch.d.ts.map +1 -0
  59. package/dist/demoTransportFetch.js +109 -0
  60. package/dist/demoTransportFetch.js.map +1 -0
  61. package/dist/demoTransportFetch.test.d.ts +2 -0
  62. package/dist/demoTransportFetch.test.d.ts.map +1 -0
  63. package/dist/demoTransportFetch.test.js +150 -0
  64. package/dist/demoTransportFetch.test.js.map +1 -0
  65. package/dist/demoTransportRequest.d.ts +35 -0
  66. package/dist/demoTransportRequest.d.ts.map +1 -0
  67. package/dist/demoTransportRequest.js +193 -0
  68. package/dist/demoTransportRequest.js.map +1 -0
  69. package/dist/demoTransportRequest.test.d.ts +2 -0
  70. package/dist/demoTransportRequest.test.d.ts.map +1 -0
  71. package/dist/demoTransportRequest.test.js +203 -0
  72. package/dist/demoTransportRequest.test.js.map +1 -0
  73. package/dist/demoTransportState.d.ts +31 -0
  74. package/dist/demoTransportState.d.ts.map +1 -0
  75. package/dist/demoTransportState.js +204 -0
  76. package/dist/demoTransportState.js.map +1 -0
  77. package/dist/demoTransportState.test.d.ts +2 -0
  78. package/dist/demoTransportState.test.d.ts.map +1 -0
  79. package/dist/demoTransportState.test.js +192 -0
  80. package/dist/demoTransportState.test.js.map +1 -0
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +46 -13
  83. package/dist/index.js.map +1 -1
  84. package/dist/providerSessionReplyRecovery.d.ts +1 -1
  85. package/dist/relaySupervisor.test.js +3 -1
  86. package/dist/relaySupervisor.test.js.map +1 -1
  87. package/dist/schemas/demo-enrollment-approval.schema.json +19 -0
  88. package/dist/schemas/demo-signing-update.schema.json +18 -0
  89. package/dist/schemas/demo-transport-continuity.schema.json +27 -0
  90. package/dist/schemas/demo-transport-journal.schema.json +13 -0
  91. package/dist/schemas/demo-transport-request.schema.json +27 -0
  92. package/dist/schemas/demo-transport-state.schema.json +13 -0
  93. package/dist/schemas/lifecycle-event.schema.json +178 -0
  94. package/dist/schemas/signing-upgrade-context.schema.json +28 -0
  95. package/dist/schemas/signing-upgrade-source.schema.json +32 -0
  96. package/dist/usage.d.ts +1 -1
  97. package/dist/usage.d.ts.map +1 -1
  98. package/dist/usage.js +1 -1
  99. package/dist/usage.js.map +1 -1
  100. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -39,13 +39,16 @@ import { connectDemoDevice, verifyDemoDevice } from './demoEnrollment.js';
39
39
  import { performDemoPeerAction, withDemoDeviceLock } from './demoPeer.js';
40
40
  import { demoRepositoryPackage } from './demoPackage.js';
41
41
  import { demoDeviceAndPackageStatus } from './demoStatus.js';
42
+ import { prepareDemoSigningUpgradeProof, readDemoSigningUpgradeContext } from './demoSigningUpgradeProof.js';
43
+ import { submitDemoSigningUpgradeProof } from './demoSigningUpgradeSubmission.js';
44
+ import { createDemoDeviceTransport } from './demoDeviceTransport.js';
42
45
  import { runDemoWatch } from './demoWatch.js';
43
46
  import { runDemoSupervisor } from './demoSupervisor.js';
44
47
  import { demoWatchRegistrationKey, listDemoWatchRegistrations } from './demoWatchRegistry.js';
45
48
  import { createDemoWatchHealthRecorder } from './demoWatchHealth.js';
46
49
  import { demoWatchStatus, disableDemoWatch, enableDemoWatch, inspectDemoWatchSupervisor } from './demoWatchControl.js';
47
50
  export { openCooperativeInboxSession } from './cooperativeInboxSession.js';
48
- const VERSION = '0.2.109';
51
+ const VERSION = '0.2.111';
49
52
  const USAGE = CLI_USAGE;
50
53
  const execFileAsync = promisify(execFile);
51
54
  const LOCAL_PROVIDER_IDS = ['codex', 'claude', 'agy', 'hermes'];
@@ -1604,14 +1607,15 @@ async function supervisedDemoCycle(registration, signal) {
1604
1607
  const nativeDirectory = registration.provider === 'codex' ? resolve(workspace, '.agents', 'skills')
1605
1608
  : registration.provider === 'claude' ? resolve(workspace, '.claude', 'skills')
1606
1609
  : nativeSkillDirectory(registration.provider);
1607
- return withDemoDeviceLock(scope, () => {
1610
+ return withDemoDeviceLock(scope, async () => {
1608
1611
  signal.throwIfAborted();
1609
- return demoRepositoryPackage({ scope, workspace, provider: registration.provider,
1610
- nativeSkillDirectory: nativeDirectory }, { fetcher: (url, options) => {
1612
+ const deps = await createDemoDeviceTransport(scope, { fetcher: (url, options) => {
1611
1613
  signal.throwIfAborted();
1612
1614
  return fetch(url, { ...options,
1613
1615
  signal: options?.signal ? AbortSignal.any([options.signal, signal]) : signal });
1614
1616
  } });
1617
+ return demoRepositoryPackage({ scope, workspace, provider: registration.provider,
1618
+ nativeSkillDirectory: nativeDirectory }, deps);
1615
1619
  });
1616
1620
  }
1617
1621
  async function relaySupervise(flags) {
@@ -5896,7 +5900,8 @@ export async function run(argv) {
5896
5900
  if (flags.has('version') || command === 'version')
5897
5901
  return { version: VERSION };
5898
5902
  if (command === 'demo' && ['connect', 'status', 'role', 'peers', 'ask', 'reply', 'inbox', 'ack', 'resume',
5899
- 'package', 'package-status', 'watch', 'watch-enable', 'watch-status', 'watch-disable']
5903
+ 'package', 'package-status', 'watch', 'watch-enable', 'watch-status', 'watch-disable',
5904
+ 'signing-client-proof', 'signing-owner-proof', 'transport-connect']
5900
5905
  .includes(String(subcommand))) {
5901
5906
  const hqUrl = normalizeHqUrl(portalUrl(flags));
5902
5907
  const organizationId = required(flags, 'organization-id');
@@ -5911,18 +5916,41 @@ export async function run(argv) {
5911
5916
  throw new Error('Local Git remote does not match the private Demo repository binding.');
5912
5917
  }
5913
5918
  const watchControl = ['watch-enable', 'watch-status', 'watch-disable'].includes(String(subcommand));
5919
+ const signingProof = ['signing-client-proof', 'signing-owner-proof'].includes(String(subcommand));
5920
+ if (signingProof && subcommand === 'signing-owner-proof' && flags.has('submit')) {
5921
+ throw new Error('Owner signing approval requires explicit browser confirmation.');
5922
+ }
5914
5923
  if (watchControl && await realpath(root) !== workspace) {
5915
5924
  throw new Error('Demo watch setup must select the exact Git repository root.');
5916
5925
  }
5926
+ let transportOrigin = null;
5927
+ if (subcommand === 'transport-connect') {
5928
+ transportOrigin = required(flags, 'transport-origin');
5929
+ try {
5930
+ const target = new URL(transportOrigin);
5931
+ if (transportOrigin.length > 2048 || target.protocol !== 'https:' || target.origin !== transportOrigin || transportOrigin === hqUrl)
5932
+ throw new Error();
5933
+ }
5934
+ catch {
5935
+ throw new Error('Demo transport recovery target_invalid. Use the exact reviewed HTTPS origin.');
5936
+ }
5937
+ }
5917
5938
  if (flags.has('dry-run'))
5918
- return { ok: true, stage: watchControl ? 'demo_watch_plan' : 'demo_device_plan',
5939
+ return { ok: true, stage: transportOrigin ? 'demo_transport_plan' : signingProof ? 'demo_signing_proof_plan'
5940
+ : watchControl ? 'demo_watch_plan' : 'demo_device_plan',
5919
5941
  organizationId, repositoryId, normalizedRepository, workspaceVerified: true,
5920
- repositoryPackageState: 'not_connected' };
5942
+ repositoryPackageState: 'not_connected', ...(transportOrigin ? { transportOrigin } : {}) };
5921
5943
  const grant = subcommand === 'connect' ? required(flags, 'grant') : null;
5922
5944
  const scope = {
5923
5945
  hqUrl, organizationId, repositoryId, normalizedRepository,
5924
5946
  installationId: await loadOrCreateInstallationId(), stateRoot: dharmaHome(),
5925
5947
  };
5948
+ if (signingProof) {
5949
+ const context = await readDemoSigningUpgradeContext(resolve(required(flags, 'review-context')));
5950
+ if (flags.has('submit'))
5951
+ return withDemoDeviceLock(scope, async () => submitDemoSigningUpgradeProof(scope, context, await createDemoDeviceTransport(scope)));
5952
+ return withDemoDeviceLock(scope, () => prepareDemoSigningUpgradeProof(scope, context, subcommand === 'signing-owner-proof' ? 'owner' : 'client'));
5953
+ }
5926
5954
  if (watchControl) {
5927
5955
  const existing = (await listDemoWatchRegistrations(dharmaHome()))
5928
5956
  .find(row => row.hqUrl === hqUrl && row.organizationId === organizationId && row.repositoryId === repositoryId);
@@ -5935,7 +5963,9 @@ export async function run(argv) {
5935
5963
  hqUrl, organizationId, repositoryId, normalizedRepository, provider, workspace };
5936
5964
  const input = { home: dharmaHome(), registration, version: VERSION };
5937
5965
  const deps = {
5938
- verify: async () => { await withDemoDeviceLock(scope, () => verifyDemoDevice(scope)); },
5966
+ verify: async () => {
5967
+ await withDemoDeviceLock(scope, async () => verifyDemoDevice(scope, await createDemoDeviceTransport(scope)));
5968
+ },
5939
5969
  exclusive: operation => withRelayStartupMutation(operation),
5940
5970
  prepareStartup: async () => {
5941
5971
  const launcher = await installStableRepositoryLauncher(workspace);
@@ -5963,9 +5993,9 @@ export async function run(argv) {
5963
5993
  const demoNativeSkillDirectory = provider === 'codex' ? resolve(workspace, '.agents', 'skills')
5964
5994
  : provider === 'claude' ? resolve(workspace, '.claude', 'skills')
5965
5995
  : nativeSkillDirectory(provider);
5966
- const cycle = () => withDemoDeviceLock(scope, () => demoRepositoryPackage({ scope, workspace,
5996
+ const cycle = () => withDemoDeviceLock(scope, async () => demoRepositoryPackage({ scope, workspace,
5967
5997
  statusOnly: subcommand === 'package-status', provider,
5968
- nativeSkillDirectory: demoNativeSkillDirectory }));
5998
+ nativeSkillDirectory: demoNativeSkillDirectory }, await createDemoDeviceTransport(scope)));
5969
5999
  if (subcommand !== 'watch')
5970
6000
  return cycle();
5971
6001
  const rawInterval = flags.get('interval-ms');
@@ -5988,8 +6018,6 @@ export async function run(argv) {
5988
6018
  }
5989
6019
  }
5990
6020
  return withDemoDeviceLock(scope, async () => {
5991
- if (subcommand === 'status')
5992
- return demoDeviceAndPackageStatus(scope, workspace);
5993
6021
  if (subcommand === 'connect') {
5994
6022
  const connected = await connectDemoDevice({
5995
6023
  ...scope, grant: grant,
@@ -6003,6 +6031,11 @@ export async function run(argv) {
6003
6031
  const { configPath: _configPath, ...receipt } = connected;
6004
6032
  return receipt;
6005
6033
  }
6034
+ const deps = await createDemoDeviceTransport(scope);
6035
+ if (transportOrigin)
6036
+ return deps.connectTransport(transportOrigin);
6037
+ if (subcommand === 'status')
6038
+ return demoDeviceAndPackageStatus(scope, workspace, deps);
6006
6039
  let action = null;
6007
6040
  if (subcommand === 'role') {
6008
6041
  const categories = repeated.get('category') || [];
@@ -6026,7 +6059,7 @@ export async function run(argv) {
6026
6059
  action = { kind: 'inbox' };
6027
6060
  if (subcommand === 'ack')
6028
6061
  action = { kind: 'ack', messageId: required(flags, 'message-id') };
6029
- return performDemoPeerAction(scope, action);
6062
+ return performDemoPeerAction(scope, action, deps);
6030
6063
  });
6031
6064
  }
6032
6065
  if (command === 'bootstrap')