@vibesdotdev/hq 0.0.0-stage → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +18 -0
- package/README.md +49 -2
- package/dist/agent-events/descriptors.d.ts +33 -0
- package/dist/agent-events/descriptors.d.ts.map +1 -0
- package/dist/agent-events/descriptors.js +34 -0
- package/dist/agent-events/descriptors.js.map +1 -0
- package/dist/app/auth/cloud-sync.consumer.d.ts +12 -0
- package/dist/app/auth/cloud-sync.consumer.d.ts.map +1 -0
- package/dist/app/auth/cloud-sync.consumer.js +31 -0
- package/dist/app/auth/cloud-sync.consumer.js.map +1 -0
- package/dist/app/auth/hq.app-auth-machine.record.descriptor.d.ts +5 -0
- package/dist/app/auth/hq.app-auth-machine.record.descriptor.d.ts.map +1 -0
- package/dist/app/auth/hq.app-auth-machine.record.descriptor.js +39 -0
- package/dist/app/auth/hq.app-auth-machine.record.descriptor.js.map +1 -0
- package/dist/app/auth/hq.app-auth-pairings.record.descriptor.d.ts +5 -0
- package/dist/app/auth/hq.app-auth-pairings.record.descriptor.d.ts.map +1 -0
- package/dist/app/auth/hq.app-auth-pairings.record.descriptor.js +43 -0
- package/dist/app/auth/hq.app-auth-pairings.record.descriptor.js.map +1 -0
- package/dist/app/auth/hq.app-auth-tokens.record.descriptor.d.ts +5 -0
- package/dist/app/auth/hq.app-auth-tokens.record.descriptor.d.ts.map +1 -0
- package/dist/app/auth/hq.app-auth-tokens.record.descriptor.js +42 -0
- package/dist/app/auth/hq.app-auth-tokens.record.descriptor.js.map +1 -0
- package/dist/app/auth/schemas/auth.d.ts +146 -0
- package/dist/app/auth/schemas/auth.d.ts.map +1 -0
- package/dist/app/auth/schemas/auth.js +53 -0
- package/dist/app/auth/schemas/auth.js.map +1 -0
- package/dist/app/auth/service.consumer.d.ts +17 -0
- package/dist/app/auth/service.consumer.d.ts.map +1 -0
- package/dist/app/auth/service.consumer.js +79 -0
- package/dist/app/auth/service.consumer.js.map +1 -0
- package/dist/app/auth/sync.consumer.d.ts +2 -0
- package/dist/app/auth/sync.consumer.d.ts.map +1 -0
- package/dist/app/auth/sync.consumer.js +2 -0
- package/dist/app/auth/sync.consumer.js.map +1 -0
- package/dist/app/auth/sync.d.ts +23 -0
- package/dist/app/auth/sync.d.ts.map +1 -0
- package/dist/app/auth/sync.js +290 -0
- package/dist/app/auth/sync.js.map +1 -0
- package/dist/app/auth/types.d.ts +20 -0
- package/dist/app/auth/types.d.ts.map +1 -0
- package/dist/app/auth/types.js +7 -0
- package/dist/app/auth/types.js.map +1 -0
- package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.d.ts +9 -0
- package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.d.ts.map +1 -0
- package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.js +45 -0
- package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.js.map +1 -0
- package/dist/applets/component-ref.d.ts +6 -0
- package/dist/applets/component-ref.d.ts.map +1 -0
- package/dist/applets/component-ref.js +6 -0
- package/dist/applets/component-ref.js.map +1 -0
- package/dist/applets/index.d.ts +3 -0
- package/dist/applets/index.d.ts.map +1 -0
- package/dist/applets/index.js +3 -0
- package/dist/applets/index.js.map +1 -0
- package/dist/approval/approval-resolved.event.descriptor.d.ts +11 -0
- package/dist/approval/approval-resolved.event.descriptor.d.ts.map +1 -0
- package/dist/approval/approval-resolved.event.descriptor.js +11 -0
- package/dist/approval/approval-resolved.event.descriptor.js.map +1 -0
- package/dist/approval/approval-resolved.job.descriptor.d.ts +36 -0
- package/dist/approval/approval-resolved.job.descriptor.d.ts.map +1 -0
- package/dist/approval/approval-resolved.job.descriptor.js +24 -0
- package/dist/approval/approval-resolved.job.descriptor.js.map +1 -0
- package/dist/approval/approval-resolved.job.impl.d.ts +19 -0
- package/dist/approval/approval-resolved.job.impl.d.ts.map +1 -0
- package/dist/approval/approval-resolved.job.impl.js +26 -0
- package/dist/approval/approval-resolved.job.impl.js.map +1 -0
- package/dist/approval/approval-resolved.subscription.descriptor.d.ts +21 -0
- package/dist/approval/approval-resolved.subscription.descriptor.d.ts.map +1 -0
- package/dist/approval/approval-resolved.subscription.descriptor.js +20 -0
- package/dist/approval/approval-resolved.subscription.descriptor.js.map +1 -0
- package/dist/approval/schemas.d.ts +45 -0
- package/dist/approval/schemas.d.ts.map +1 -0
- package/dist/approval/schemas.js +27 -0
- package/dist/approval/schemas.js.map +1 -0
- package/dist/approval/surface-approval-channel.descriptor.d.ts +14 -0
- package/dist/approval/surface-approval-channel.descriptor.d.ts.map +1 -0
- package/dist/approval/surface-approval-channel.descriptor.js +16 -0
- package/dist/approval/surface-approval-channel.descriptor.js.map +1 -0
- package/dist/approval/surface-approval-channel.impl.d.ts +19 -0
- package/dist/approval/surface-approval-channel.impl.d.ts.map +1 -0
- package/dist/approval/surface-approval-channel.impl.js +101 -0
- package/dist/approval/surface-approval-channel.impl.js.map +1 -0
- package/dist/cli/app/handoff/hq.app.handoff.descriptor.d.ts +40 -0
- package/dist/cli/app/handoff/hq.app.handoff.descriptor.d.ts.map +1 -0
- package/dist/cli/app/handoff/hq.app.handoff.descriptor.js +23 -0
- package/dist/cli/app/handoff/hq.app.handoff.descriptor.js.map +1 -0
- package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.d.ts +7 -0
- package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.d.ts.map +1 -0
- package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.js +107 -0
- package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.js.map +1 -0
- package/dist/cli/app/hq.app.cli-group.descriptor.d.ts +12 -0
- package/dist/cli/app/hq.app.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/app/hq.app.cli-group.descriptor.js +12 -0
- package/dist/cli/app/hq.app.cli-group.descriptor.js.map +1 -0
- package/dist/cli/app/pair/hq.app.pair.descriptor.d.ts +43 -0
- package/dist/cli/app/pair/hq.app.pair.descriptor.d.ts.map +1 -0
- package/dist/cli/app/pair/hq.app.pair.descriptor.js +27 -0
- package/dist/cli/app/pair/hq.app.pair.descriptor.js.map +1 -0
- package/dist/cli/app/pair/hq.app.pair.impl.consumer.d.ts +7 -0
- package/dist/cli/app/pair/hq.app.pair.impl.consumer.d.ts.map +1 -0
- package/dist/cli/app/pair/hq.app.pair.impl.consumer.js +89 -0
- package/dist/cli/app/pair/hq.app.pair.impl.consumer.js.map +1 -0
- package/dist/cli/app/shared/options.d.ts +68 -0
- package/dist/cli/app/shared/options.d.ts.map +1 -0
- package/dist/cli/app/shared/options.js +7 -0
- package/dist/cli/app/shared/options.js.map +1 -0
- package/dist/cli/app/token/hq.app.token.descriptor.d.ts +40 -0
- package/dist/cli/app/token/hq.app.token.descriptor.d.ts.map +1 -0
- package/dist/cli/app/token/hq.app.token.descriptor.js +23 -0
- package/dist/cli/app/token/hq.app.token.descriptor.js.map +1 -0
- package/dist/cli/app/token/hq.app.token.impl.consumer.d.ts +7 -0
- package/dist/cli/app/token/hq.app.token.impl.consumer.d.ts.map +1 -0
- package/dist/cli/app/token/hq.app.token.impl.consumer.js +89 -0
- package/dist/cli/app/token/hq.app.token.impl.consumer.js.map +1 -0
- package/dist/cli/channel/hq.channel.cli-group.descriptor.d.ts +12 -0
- package/dist/cli/channel/hq.channel.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.cli-group.descriptor.js +12 -0
- package/dist/cli/channel/hq.channel.cli-group.descriptor.js.map +1 -0
- package/dist/cli/channel/hq.channel.enable.descriptor.d.ts +21 -0
- package/dist/cli/channel/hq.channel.enable.descriptor.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.enable.descriptor.js +16 -0
- package/dist/cli/channel/hq.channel.enable.descriptor.js.map +1 -0
- package/dist/cli/channel/hq.channel.enable.impl.d.ts +7 -0
- package/dist/cli/channel/hq.channel.enable.impl.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.enable.impl.js +23 -0
- package/dist/cli/channel/hq.channel.enable.impl.js.map +1 -0
- package/dist/cli/channel/hq.channel.fire.descriptor.d.ts +17 -0
- package/dist/cli/channel/hq.channel.fire.descriptor.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.fire.descriptor.js +13 -0
- package/dist/cli/channel/hq.channel.fire.descriptor.js.map +1 -0
- package/dist/cli/channel/hq.channel.fire.impl.d.ts +7 -0
- package/dist/cli/channel/hq.channel.fire.impl.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.fire.impl.js +26 -0
- package/dist/cli/channel/hq.channel.fire.impl.js.map +1 -0
- package/dist/cli/channel/hq.channel.list.descriptor.d.ts +16 -0
- package/dist/cli/channel/hq.channel.list.descriptor.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.list.descriptor.js +13 -0
- package/dist/cli/channel/hq.channel.list.descriptor.js.map +1 -0
- package/dist/cli/channel/hq.channel.list.impl.d.ts +7 -0
- package/dist/cli/channel/hq.channel.list.impl.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.list.impl.js +30 -0
- package/dist/cli/channel/hq.channel.list.impl.js.map +1 -0
- package/dist/cli/channel/hq.channel.logs.descriptor.d.ts +24 -0
- package/dist/cli/channel/hq.channel.logs.descriptor.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.logs.descriptor.js +17 -0
- package/dist/cli/channel/hq.channel.logs.descriptor.js.map +1 -0
- package/dist/cli/channel/hq.channel.logs.impl.d.ts +9 -0
- package/dist/cli/channel/hq.channel.logs.impl.d.ts.map +1 -0
- package/dist/cli/channel/hq.channel.logs.impl.js +74 -0
- package/dist/cli/channel/hq.channel.logs.impl.js.map +1 -0
- package/dist/cli/friction/_store-hint.d.ts +7 -0
- package/dist/cli/friction/_store-hint.d.ts.map +1 -0
- package/dist/cli/friction/_store-hint.js +13 -0
- package/dist/cli/friction/_store-hint.js.map +1 -0
- package/dist/cli/friction/hq.friction.cli-group.descriptor.d.ts +11 -0
- package/dist/cli/friction/hq.friction.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.cli-group.descriptor.js +15 -0
- package/dist/cli/friction/hq.friction.cli-group.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.disposition.d.ts +5 -0
- package/dist/cli/friction/hq.friction.disposition.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.disposition.js +64 -0
- package/dist/cli/friction/hq.friction.disposition.js.map +1 -0
- package/dist/cli/friction/hq.friction.emit.descriptor.d.ts +65 -0
- package/dist/cli/friction/hq.friction.emit.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.emit.descriptor.js +70 -0
- package/dist/cli/friction/hq.friction.emit.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.emit.impl.d.ts +7 -0
- package/dist/cli/friction/hq.friction.emit.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.emit.impl.js +85 -0
- package/dist/cli/friction/hq.friction.emit.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.list.descriptor.d.ts +37 -0
- package/dist/cli/friction/hq.friction.list.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.list.descriptor.js +22 -0
- package/dist/cli/friction/hq.friction.list.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.list.impl.d.ts +7 -0
- package/dist/cli/friction/hq.friction.list.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.list.impl.js +73 -0
- package/dist/cli/friction/hq.friction.list.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.promote.descriptor.d.ts +21 -0
- package/dist/cli/friction/hq.friction.promote.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.promote.descriptor.js +14 -0
- package/dist/cli/friction/hq.friction.promote.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.promote.impl.d.ts +7 -0
- package/dist/cli/friction/hq.friction.promote.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.promote.impl.js +47 -0
- package/dist/cli/friction/hq.friction.promote.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.reject.descriptor.d.ts +24 -0
- package/dist/cli/friction/hq.friction.reject.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.reject.descriptor.js +17 -0
- package/dist/cli/friction/hq.friction.reject.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.reject.impl.d.ts +6 -0
- package/dist/cli/friction/hq.friction.reject.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.reject.impl.js +7 -0
- package/dist/cli/friction/hq.friction.reject.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.resolve.descriptor.d.ts +27 -0
- package/dist/cli/friction/hq.friction.resolve.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.resolve.descriptor.js +18 -0
- package/dist/cli/friction/hq.friction.resolve.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.resolve.impl.d.ts +6 -0
- package/dist/cli/friction/hq.friction.resolve.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.resolve.impl.js +7 -0
- package/dist/cli/friction/hq.friction.resolve.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.show.descriptor.d.ts +24 -0
- package/dist/cli/friction/hq.friction.show.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.show.descriptor.js +17 -0
- package/dist/cli/friction/hq.friction.show.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.show.impl.d.ts +7 -0
- package/dist/cli/friction/hq.friction.show.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.show.impl.js +64 -0
- package/dist/cli/friction/hq.friction.show.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.sync.descriptor.d.ts +16 -0
- package/dist/cli/friction/hq.friction.sync.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.sync.descriptor.js +13 -0
- package/dist/cli/friction/hq.friction.sync.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.sync.impl.d.ts +7 -0
- package/dist/cli/friction/hq.friction.sync.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.sync.impl.js +29 -0
- package/dist/cli/friction/hq.friction.sync.impl.js.map +1 -0
- package/dist/cli/friction/hq.friction.triage.descriptor.d.ts +27 -0
- package/dist/cli/friction/hq.friction.triage.descriptor.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.triage.descriptor.js +18 -0
- package/dist/cli/friction/hq.friction.triage.descriptor.js.map +1 -0
- package/dist/cli/friction/hq.friction.triage.impl.d.ts +6 -0
- package/dist/cli/friction/hq.friction.triage.impl.d.ts.map +1 -0
- package/dist/cli/friction/hq.friction.triage.impl.js +7 -0
- package/dist/cli/friction/hq.friction.triage.impl.js.map +1 -0
- package/dist/cli/friction/invocation.d.ts +12 -0
- package/dist/cli/friction/invocation.d.ts.map +1 -0
- package/dist/cli/friction/invocation.js +28 -0
- package/dist/cli/friction/invocation.js.map +1 -0
- package/dist/cli/health/hq.health.descriptor.d.ts +19 -0
- package/dist/cli/health/hq.health.descriptor.d.ts.map +1 -0
- package/dist/cli/health/hq.health.descriptor.js +16 -0
- package/dist/cli/health/hq.health.descriptor.js.map +1 -0
- package/dist/cli/health/hq.health.impl.d.ts +3 -0
- package/dist/cli/health/hq.health.impl.d.ts.map +1 -0
- package/dist/cli/health/hq.health.impl.js +151 -0
- package/dist/cli/health/hq.health.impl.js.map +1 -0
- package/dist/cli/host-platform.d.ts +14 -0
- package/dist/cli/host-platform.d.ts.map +1 -0
- package/dist/cli/host-platform.js +30 -0
- package/dist/cli/host-platform.js.map +1 -0
- package/dist/cli/hq.cli-group.descriptor.d.ts +11 -0
- package/dist/cli/hq.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/hq.cli-group.descriptor.js +11 -0
- package/dist/cli/hq.cli-group.descriptor.js.map +1 -0
- package/dist/cli/init/hq.init.descriptor.d.ts +7 -0
- package/dist/cli/init/hq.init.descriptor.d.ts.map +1 -0
- package/dist/cli/init/hq.init.descriptor.js +36 -0
- package/dist/cli/init/hq.init.descriptor.js.map +1 -0
- package/dist/cli/init/hq.init.impl.d.ts +7 -0
- package/dist/cli/init/hq.init.impl.d.ts.map +1 -0
- package/dist/cli/init/hq.init.impl.js +163 -0
- package/dist/cli/init/hq.init.impl.js.map +1 -0
- package/dist/cli/install/hq.install.descriptor.d.ts +9 -0
- package/dist/cli/install/hq.install.descriptor.d.ts.map +1 -0
- package/dist/cli/install/hq.install.descriptor.js +34 -0
- package/dist/cli/install/hq.install.descriptor.js.map +1 -0
- package/dist/cli/install/hq.install.impl.d.ts +6 -0
- package/dist/cli/install/hq.install.impl.d.ts.map +1 -0
- package/dist/cli/install/hq.install.impl.js +110 -0
- package/dist/cli/install/hq.install.impl.js.map +1 -0
- package/dist/cli/permissions/hq.permissions.descriptor.d.ts +9 -0
- package/dist/cli/permissions/hq.permissions.descriptor.d.ts.map +1 -0
- package/dist/cli/permissions/hq.permissions.descriptor.js +25 -0
- package/dist/cli/permissions/hq.permissions.descriptor.js.map +1 -0
- package/dist/cli/permissions/hq.permissions.impl.d.ts +3 -0
- package/dist/cli/permissions/hq.permissions.impl.d.ts.map +1 -0
- package/dist/cli/permissions/hq.permissions.impl.js +113 -0
- package/dist/cli/permissions/hq.permissions.impl.js.map +1 -0
- package/dist/cli/plugin.d.ts +3 -0
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +77 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/cli/schemas/input.d.ts +117 -0
- package/dist/cli/schemas/input.d.ts.map +1 -0
- package/dist/cli/schemas/input.js +66 -0
- package/dist/cli/schemas/input.js.map +1 -0
- package/dist/cli/service/hq.service.cli-group.descriptor.d.ts +12 -0
- package/dist/cli/service/hq.service.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/service/hq.service.cli-group.descriptor.js +12 -0
- package/dist/cli/service/hq.service.cli-group.descriptor.js.map +1 -0
- package/dist/cli/service/hq.service.list.descriptor.d.ts +16 -0
- package/dist/cli/service/hq.service.list.descriptor.d.ts.map +1 -0
- package/dist/cli/service/hq.service.list.descriptor.js +13 -0
- package/dist/cli/service/hq.service.list.descriptor.js.map +1 -0
- package/dist/cli/service/hq.service.list.impl.d.ts +7 -0
- package/dist/cli/service/hq.service.list.impl.d.ts.map +1 -0
- package/dist/cli/service/hq.service.list.impl.js +31 -0
- package/dist/cli/service/hq.service.list.impl.js.map +1 -0
- package/dist/cli/service/hq.service.manage.descriptor.d.ts +25 -0
- package/dist/cli/service/hq.service.manage.descriptor.d.ts.map +1 -0
- package/dist/cli/service/hq.service.manage.descriptor.js +23 -0
- package/dist/cli/service/hq.service.manage.descriptor.js.map +1 -0
- package/dist/cli/service/hq.service.manage.impl.d.ts +7 -0
- package/dist/cli/service/hq.service.manage.impl.d.ts.map +1 -0
- package/dist/cli/service/hq.service.manage.impl.js +64 -0
- package/dist/cli/service/hq.service.manage.impl.js.map +1 -0
- package/dist/cli/service/hq.service.register.descriptor.d.ts +21 -0
- package/dist/cli/service/hq.service.register.descriptor.d.ts.map +1 -0
- package/dist/cli/service/hq.service.register.descriptor.js +20 -0
- package/dist/cli/service/hq.service.register.descriptor.js.map +1 -0
- package/dist/cli/service/hq.service.register.impl.d.ts +7 -0
- package/dist/cli/service/hq.service.register.impl.d.ts.map +1 -0
- package/dist/cli/service/hq.service.register.impl.js +35 -0
- package/dist/cli/service/hq.service.register.impl.js.map +1 -0
- package/dist/cli/setup/hq.setup.descriptor.d.ts +9 -0
- package/dist/cli/setup/hq.setup.descriptor.d.ts.map +1 -0
- package/dist/cli/setup/hq.setup.descriptor.js +22 -0
- package/dist/cli/setup/hq.setup.descriptor.js.map +1 -0
- package/dist/cli/setup/hq.setup.impl.d.ts +7 -0
- package/dist/cli/setup/hq.setup.impl.d.ts.map +1 -0
- package/dist/cli/setup/hq.setup.impl.js +57 -0
- package/dist/cli/setup/hq.setup.impl.js.map +1 -0
- package/dist/cli/setup/index.d.ts +2 -0
- package/dist/cli/setup/index.d.ts.map +1 -0
- package/dist/cli/setup/index.js +2 -0
- package/dist/cli/setup/index.js.map +1 -0
- package/dist/cli/surface/hq.surface.cli-group.descriptor.d.ts +12 -0
- package/dist/cli/surface/hq.surface.cli-group.descriptor.d.ts.map +1 -0
- package/dist/cli/surface/hq.surface.cli-group.descriptor.js +12 -0
- package/dist/cli/surface/hq.surface.cli-group.descriptor.js.map +1 -0
- package/dist/cli/surface/hq.surface.list.descriptor.d.ts +20 -0
- package/dist/cli/surface/hq.surface.list.descriptor.d.ts.map +1 -0
- package/dist/cli/surface/hq.surface.list.descriptor.js +20 -0
- package/dist/cli/surface/hq.surface.list.descriptor.js.map +1 -0
- package/dist/cli/surface/hq.surface.list.impl.d.ts +7 -0
- package/dist/cli/surface/hq.surface.list.impl.d.ts.map +1 -0
- package/dist/cli/surface/hq.surface.list.impl.js +35 -0
- package/dist/cli/surface/hq.surface.list.impl.js.map +1 -0
- package/dist/cli/surface/hq.surface.resolve.descriptor.d.ts +22 -0
- package/dist/cli/surface/hq.surface.resolve.descriptor.d.ts.map +1 -0
- package/dist/cli/surface/hq.surface.resolve.descriptor.js +20 -0
- package/dist/cli/surface/hq.surface.resolve.descriptor.js.map +1 -0
- package/dist/cli/surface/hq.surface.resolve.impl.d.ts +7 -0
- package/dist/cli/surface/hq.surface.resolve.impl.d.ts.map +1 -0
- package/dist/cli/surface/hq.surface.resolve.impl.js +29 -0
- package/dist/cli/surface/hq.surface.resolve.impl.js.map +1 -0
- package/dist/client/friction/index.d.ts +58 -0
- package/dist/client/friction/index.d.ts.map +1 -0
- package/dist/client/friction/index.js +146 -0
- package/dist/client/friction/index.js.map +1 -0
- package/dist/client/friction.client.descriptor.d.ts +14 -0
- package/dist/client/friction.client.descriptor.d.ts.map +1 -0
- package/dist/client/friction.client.descriptor.js +14 -0
- package/dist/client/friction.client.descriptor.js.map +1 -0
- package/dist/client/hq.client.descriptor.d.ts +14 -0
- package/dist/client/hq.client.descriptor.d.ts.map +1 -0
- package/dist/client/hq.client.descriptor.js +14 -0
- package/dist/client/hq.client.descriptor.js.map +1 -0
- package/dist/client/index.d.ts +95 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +144 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/hq-friction.config.descriptor.d.ts +227 -0
- package/dist/config/hq-friction.config.descriptor.d.ts.map +1 -0
- package/dist/config/hq-friction.config.descriptor.js +116 -0
- package/dist/config/hq-friction.config.descriptor.js.map +1 -0
- package/dist/dashboard.d.ts +133 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +371 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/docs/hq.machines.docs.descriptor.d.ts +22 -0
- package/dist/docs/hq.machines.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/hq.machines.docs.descriptor.js +65 -0
- package/dist/docs/hq.machines.docs.descriptor.js.map +1 -0
- package/dist/docs/hq.sessions.docs.descriptor.d.ts +22 -0
- package/dist/docs/hq.sessions.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/hq.sessions.docs.descriptor.js +74 -0
- package/dist/docs/hq.sessions.docs.descriptor.js.map +1 -0
- package/dist/docs/hq.surfaces.docs.descriptor.d.ts +38 -0
- package/dist/docs/hq.surfaces.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/hq.surfaces.docs.descriptor.js +161 -0
- package/dist/docs/hq.surfaces.docs.descriptor.js.map +1 -0
- package/dist/docs/hq.terminal.docs.descriptor.d.ts +22 -0
- package/dist/docs/hq.terminal.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/hq.terminal.docs.descriptor.js +86 -0
- package/dist/docs/hq.terminal.docs.descriptor.js.map +1 -0
- package/dist/friction/clusters.d.ts +23 -0
- package/dist/friction/clusters.d.ts.map +1 -0
- package/dist/friction/clusters.js +56 -0
- package/dist/friction/clusters.js.map +1 -0
- package/dist/friction/fingerprint.d.ts +56 -0
- package/dist/friction/fingerprint.d.ts.map +1 -0
- package/dist/friction/fingerprint.js +113 -0
- package/dist/friction/fingerprint.js.map +1 -0
- package/dist/friction/friction-dispositions.record.descriptor.d.ts +4 -0
- package/dist/friction/friction-dispositions.record.descriptor.d.ts.map +1 -0
- package/dist/friction/friction-dispositions.record.descriptor.js +36 -0
- package/dist/friction/friction-dispositions.record.descriptor.js.map +1 -0
- package/dist/friction/friction-signals.record.descriptor.d.ts +12 -0
- package/dist/friction/friction-signals.record.descriptor.d.ts.map +1 -0
- package/dist/friction/friction-signals.record.descriptor.js +52 -0
- package/dist/friction/friction-signals.record.descriptor.js.map +1 -0
- package/dist/friction/intake.d.ts +79 -0
- package/dist/friction/intake.d.ts.map +1 -0
- package/dist/friction/intake.js +459 -0
- package/dist/friction/intake.js.map +1 -0
- package/dist/friction/jobs/friction-clusters.job.descriptor.d.ts +71 -0
- package/dist/friction/jobs/friction-clusters.job.descriptor.d.ts.map +1 -0
- package/dist/friction/jobs/friction-clusters.job.descriptor.js +34 -0
- package/dist/friction/jobs/friction-clusters.job.descriptor.js.map +1 -0
- package/dist/friction/jobs/friction-clusters.job.impl.d.ts +22 -0
- package/dist/friction/jobs/friction-clusters.job.impl.d.ts.map +1 -0
- package/dist/friction/jobs/friction-clusters.job.impl.js +33 -0
- package/dist/friction/jobs/friction-clusters.job.impl.js.map +1 -0
- package/dist/friction/promote-input.d.ts +37 -0
- package/dist/friction/promote-input.d.ts.map +1 -0
- package/dist/friction/promote-input.js +58 -0
- package/dist/friction/promote-input.js.map +1 -0
- package/dist/friction/promotion-visibility.d.ts +34 -0
- package/dist/friction/promotion-visibility.d.ts.map +1 -0
- package/dist/friction/promotion-visibility.js +57 -0
- package/dist/friction/promotion-visibility.js.map +1 -0
- package/dist/friction/read.d.ts +21 -0
- package/dist/friction/read.d.ts.map +1 -0
- package/dist/friction/read.js +23 -0
- package/dist/friction/read.js.map +1 -0
- package/dist/friction/schemas/disposition.d.ts +42 -0
- package/dist/friction/schemas/disposition.d.ts.map +1 -0
- package/dist/friction/schemas/disposition.js +22 -0
- package/dist/friction/schemas/disposition.js.map +1 -0
- package/dist/friction/schemas/intake.d.ts +167 -0
- package/dist/friction/schemas/intake.d.ts.map +1 -0
- package/dist/friction/schemas/intake.js +69 -0
- package/dist/friction/schemas/intake.js.map +1 -0
- package/dist/friction/schemas/report.d.ts +138 -0
- package/dist/friction/schemas/report.d.ts.map +1 -0
- package/dist/friction/schemas/report.js +63 -0
- package/dist/friction/schemas/report.js.map +1 -0
- package/dist/friction/schemas/signal.d.ts +170 -0
- package/dist/friction/schemas/signal.d.ts.map +1 -0
- package/dist/friction/schemas/signal.js +77 -0
- package/dist/friction/schemas/signal.js.map +1 -0
- package/dist/friction/signal-recorded.event.descriptor.d.ts +53 -0
- package/dist/friction/signal-recorded.event.descriptor.d.ts.map +1 -0
- package/dist/friction/signal-recorded.event.descriptor.js +38 -0
- package/dist/friction/signal-recorded.event.descriptor.js.map +1 -0
- package/dist/friction/store.d.ts +108 -0
- package/dist/friction/store.d.ts.map +1 -0
- package/dist/friction/store.js +461 -0
- package/dist/friction/store.js.map +1 -0
- package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.d.ts +8 -0
- package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.d.ts.map +1 -0
- package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.js +18 -0
- package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.js.map +1 -0
- package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.d.ts +8 -0
- package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.d.ts.map +1 -0
- package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.js +18 -0
- package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.js.map +1 -0
- package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.d.ts +8 -0
- package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.d.ts.map +1 -0
- package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.js +14 -0
- package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.js.map +1 -0
- package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.d.ts +8 -0
- package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.d.ts.map +1 -0
- package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.js +18 -0
- package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.js.map +1 -0
- package/dist/host-guidance/kinds/host-health-check.kind.d.ts +17 -0
- package/dist/host-guidance/kinds/host-health-check.kind.d.ts.map +1 -0
- package/dist/host-guidance/kinds/host-health-check.kind.js +22 -0
- package/dist/host-guidance/kinds/host-health-check.kind.js.map +1 -0
- package/dist/host-guidance/kinds/host-permission-guidance.kind.d.ts +17 -0
- package/dist/host-guidance/kinds/host-permission-guidance.kind.d.ts.map +1 -0
- package/dist/host-guidance/kinds/host-permission-guidance.kind.js +22 -0
- package/dist/host-guidance/kinds/host-permission-guidance.kind.js.map +1 -0
- package/dist/host-guidance/registry.d.ts +16 -0
- package/dist/host-guidance/registry.d.ts.map +1 -0
- package/dist/host-guidance/registry.js +24 -0
- package/dist/host-guidance/registry.js.map +1 -0
- package/dist/hq.cloud.plugin.d.ts +3 -0
- package/dist/hq.cloud.plugin.d.ts.map +1 -0
- package/dist/hq.cloud.plugin.js +40 -0
- package/dist/hq.cloud.plugin.js.map +1 -0
- package/dist/hq.consumer.plugin.d.ts +3 -0
- package/dist/hq.consumer.plugin.d.ts.map +1 -0
- package/dist/hq.consumer.plugin.js +15 -0
- package/dist/hq.consumer.plugin.js.map +1 -0
- package/dist/hq.plugin.d.ts +9 -0
- package/dist/hq.plugin.d.ts.map +1 -0
- package/dist/hq.plugin.js +99 -0
- package/dist/hq.plugin.js.map +1 -0
- package/dist/installers/builtin/ai-runtimes/installer.d.ts +21 -0
- package/dist/installers/builtin/ai-runtimes/installer.d.ts.map +1 -0
- package/dist/installers/builtin/ai-runtimes/installer.js +244 -0
- package/dist/installers/builtin/ai-runtimes/installer.js.map +1 -0
- package/dist/installers/builtin/index.d.ts +9 -0
- package/dist/installers/builtin/index.d.ts.map +1 -0
- package/dist/installers/builtin/index.js +15 -0
- package/dist/installers/builtin/index.js.map +1 -0
- package/dist/installers/builtin/language-servers/installer.d.ts +18 -0
- package/dist/installers/builtin/language-servers/installer.d.ts.map +1 -0
- package/dist/installers/builtin/language-servers/installer.js +139 -0
- package/dist/installers/builtin/language-servers/installer.js.map +1 -0
- package/dist/installers/builtin/system-deps/installer.d.ts +8 -0
- package/dist/installers/builtin/system-deps/installer.d.ts.map +1 -0
- package/dist/installers/builtin/system-deps/installer.js +78 -0
- package/dist/installers/builtin/system-deps/installer.js.map +1 -0
- package/dist/installers/compatibility.consumer.plugin.d.ts +3 -0
- package/dist/installers/compatibility.consumer.plugin.d.ts.map +1 -0
- package/dist/installers/compatibility.consumer.plugin.js +26 -0
- package/dist/installers/compatibility.consumer.plugin.js.map +1 -0
- package/dist/installers/core/index.d.ts +3 -0
- package/dist/installers/core/index.d.ts.map +1 -0
- package/dist/installers/core/index.js +3 -0
- package/dist/installers/core/index.js.map +1 -0
- package/dist/installers/core/installer-result.d.ts +10 -0
- package/dist/installers/core/installer-result.d.ts.map +1 -0
- package/dist/installers/core/installer-result.js +14 -0
- package/dist/installers/core/installer-result.js.map +1 -0
- package/dist/installers/core/installer-runtime.d.ts +18 -0
- package/dist/installers/core/installer-runtime.d.ts.map +1 -0
- package/dist/installers/core/installer-runtime.js +5 -0
- package/dist/installers/core/installer-runtime.js.map +1 -0
- package/dist/installers/core/platform.d.ts +6 -0
- package/dist/installers/core/platform.d.ts.map +1 -0
- package/dist/installers/core/platform.js +19 -0
- package/dist/installers/core/platform.js.map +1 -0
- package/dist/installers/core/workspace.d.ts +4 -0
- package/dist/installers/core/workspace.d.ts.map +1 -0
- package/dist/installers/core/workspace.js +11 -0
- package/dist/installers/core/workspace.js.map +1 -0
- package/dist/installers/index.d.ts +6 -0
- package/dist/installers/index.d.ts.map +1 -0
- package/dist/installers/index.js +6 -0
- package/dist/installers/index.js.map +1 -0
- package/dist/installers/schemas/index.d.ts +2 -0
- package/dist/installers/schemas/index.d.ts.map +1 -0
- package/dist/installers/schemas/index.js +2 -0
- package/dist/installers/schemas/index.js.map +1 -0
- package/dist/installers/schemas/platform.d.ts +10 -0
- package/dist/installers/schemas/platform.d.ts.map +1 -0
- package/dist/installers/schemas/platform.js +9 -0
- package/dist/installers/schemas/platform.js.map +1 -0
- package/dist/installers/schemas/types.d.ts +4 -0
- package/dist/installers/schemas/types.d.ts.map +1 -0
- package/dist/installers/schemas/types.js +4 -0
- package/dist/installers/schemas/types.js.map +1 -0
- package/dist/os-wall/channels.wall.d.ts +9 -0
- package/dist/os-wall/channels.wall.d.ts.map +1 -0
- package/dist/os-wall/channels.wall.js +9 -0
- package/dist/os-wall/channels.wall.js.map +1 -0
- package/dist/os-wall/surface-store.wall.d.ts +3 -0
- package/dist/os-wall/surface-store.wall.d.ts.map +1 -0
- package/dist/os-wall/surface-store.wall.js +3 -0
- package/dist/os-wall/surface-store.wall.js.map +1 -0
- package/dist/runtime-path.d.ts +7 -0
- package/dist/runtime-path.d.ts.map +1 -0
- package/dist/runtime-path.js +7 -0
- package/dist/runtime-path.js.map +1 -0
- package/dist/schemas/host-guidance.d.ts +48 -0
- package/dist/schemas/host-guidance.d.ts.map +1 -0
- package/dist/schemas/host-guidance.js +48 -0
- package/dist/schemas/host-guidance.js.map +1 -0
- package/dist/services/backends/index.d.ts +24 -0
- package/dist/services/backends/index.d.ts.map +1 -0
- package/dist/services/backends/index.js +17 -0
- package/dist/services/backends/index.js.map +1 -0
- package/dist/services/builtin/index.d.ts +78 -0
- package/dist/services/builtin/index.d.ts.map +1 -0
- package/dist/services/builtin/index.js +44 -0
- package/dist/services/builtin/index.js.map +1 -0
- package/dist/services/descriptors/vibes-bridge.os-service.descriptor.d.ts +8 -0
- package/dist/services/descriptors/vibes-bridge.os-service.descriptor.d.ts.map +1 -0
- package/dist/services/descriptors/vibes-bridge.os-service.descriptor.js +21 -0
- package/dist/services/descriptors/vibes-bridge.os-service.descriptor.js.map +1 -0
- package/dist/services/descriptors/vibes-mcp.os-service.descriptor.d.ts +8 -0
- package/dist/services/descriptors/vibes-mcp.os-service.descriptor.d.ts.map +1 -0
- package/dist/services/descriptors/vibes-mcp.os-service.descriptor.js +20 -0
- package/dist/services/descriptors/vibes-mcp.os-service.descriptor.js.map +1 -0
- package/dist/services/descriptors/vibes-pm.os-service.descriptor.d.ts +8 -0
- package/dist/services/descriptors/vibes-pm.os-service.descriptor.d.ts.map +1 -0
- package/dist/services/descriptors/vibes-pm.os-service.descriptor.js +20 -0
- package/dist/services/descriptors/vibes-pm.os-service.descriptor.js.map +1 -0
- package/dist/services/index.d.ts +14 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +12 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/kinds/os-service.kind.d.ts +19 -0
- package/dist/services/kinds/os-service.kind.d.ts.map +1 -0
- package/dist/services/kinds/os-service.kind.js +24 -0
- package/dist/services/kinds/os-service.kind.js.map +1 -0
- package/dist/services/registry.d.ts +45 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/registry.js +141 -0
- package/dist/services/registry.js.map +1 -0
- package/dist/services/schemas/service.d.ts +79 -0
- package/dist/services/schemas/service.d.ts.map +1 -0
- package/dist/services/schemas/service.js +82 -0
- package/dist/services/schemas/service.js.map +1 -0
- package/dist/svelte/report/ReportProblemDialog.svelte +205 -0
- package/dist/svelte/report/ReportProblemDialog.svelte.d.ts +5 -0
- package/dist/svelte/report/ReportProblemDialog.svelte.d.ts.map +1 -0
- package/dist/svelte/report/capture-context.d.ts +61 -0
- package/dist/svelte/report/capture-context.d.ts.map +1 -0
- package/dist/svelte/report/capture-context.js +100 -0
- package/dist/svelte/report/report.plugin.d.ts +68 -0
- package/dist/svelte/report/report.plugin.d.ts.map +1 -0
- package/dist/svelte/report/report.plugin.js +109 -0
- package/dist/svelte/report/severity.d.ts +32 -0
- package/dist/svelte/report/severity.d.ts.map +1 -0
- package/dist/svelte/report/severity.js +13 -0
- package/dist/tools/applet/applet.schemas.d.ts +6 -0
- package/dist/tools/applet/applet.schemas.d.ts.map +1 -0
- package/dist/tools/applet/applet.schemas.js +6 -0
- package/dist/tools/applet/applet.schemas.js.map +1 -0
- package/dist/utils/exec.d.ts +22 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +38 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/fs.d.ts +10 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +25 -0
- package/dist/utils/fs.js.map +1 -0
- package/package.json +268 -4
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-flow docs for HQ's fleet and terminal surfaces (Machines, Terminal, Sessions).
|
|
3
|
+
*
|
|
4
|
+
* Structurally typed, like the three sibling topics in this directory: this
|
|
5
|
+
* package does not depend on `@vibesdotdev/docs-contracts`, and the shape is
|
|
6
|
+
* validated for real against `DocsTopicDescriptorSchema` when the docs build
|
|
7
|
+
* reads it out of the registry.
|
|
8
|
+
*/
|
|
9
|
+
const hqSurfacesMarkdown = `---
|
|
10
|
+
title: HQ Fleet & Terminal Surfaces
|
|
11
|
+
summary: User flows for Machines, Terminal, and Sessions in HQ
|
|
12
|
+
tags: [hq, fleet, terminal, sessions, machines]
|
|
13
|
+
parent: hq
|
|
14
|
+
order: 10
|
|
15
|
+
id: hq.surfaces
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# HQ Fleet & Terminal Surfaces
|
|
19
|
+
|
|
20
|
+
HQ is the cloud operations layer for always-on AI agents, connected machines,
|
|
21
|
+
and code sessions. The three core operational surfaces are:
|
|
22
|
+
|
|
23
|
+
- **Machines** (\`/fleet\`) — register and manage the machines HQ can reach
|
|
24
|
+
- **Terminal** (\`/terminal\`) — open a live terminal session on any online machine
|
|
25
|
+
- **Sessions** (\`/sessions\`) — manage cloud and fleet code workspaces
|
|
26
|
+
|
|
27
|
+
## Machines
|
|
28
|
+
|
|
29
|
+
### Navigating to Machines
|
|
30
|
+
|
|
31
|
+
From the sidebar, click **Machines** under Operations. The nav item maps to
|
|
32
|
+
\`/fleet\`.
|
|
33
|
+
|
|
34
|
+
### Adding your first machine
|
|
35
|
+
|
|
36
|
+
On the empty state, click **Add your first machine**. This opens a dialog with
|
|
37
|
+
two paths:
|
|
38
|
+
|
|
39
|
+
1. **Install on a machine you own** — give the machine a name and get a
|
|
40
|
+
one-line install command. Paste it into a terminal on that machine. HQ polls
|
|
41
|
+
every 4 seconds and automatically closes the dialog once the machine comes
|
|
42
|
+
online.
|
|
43
|
+
2. **Connect by address** — for machines that already have the fleet service
|
|
44
|
+
running, enter the host and port directly. Note: direct-address connections
|
|
45
|
+
require the local desktop app; use the install flow for cloud-persistent
|
|
46
|
+
registration.
|
|
47
|
+
|
|
48
|
+
### Machine status indicators
|
|
49
|
+
|
|
50
|
+
| Status | Meaning |
|
|
51
|
+
|--------|---------|
|
|
52
|
+
| Online | Machine is reachable and ready |
|
|
53
|
+
| Enrolled, not reachable | Registered but currently unreachable (check your network or restart the fleet service) |
|
|
54
|
+
| Connecting | Awaiting the first connection after enrollment |
|
|
55
|
+
| Unknown | Reachability check pending |
|
|
56
|
+
|
|
57
|
+
### Removing a machine
|
|
58
|
+
|
|
59
|
+
Click the trash icon on a machine card, or open the details panel and click
|
|
60
|
+
**Remove**. A confirmation dialog explains what will happen: open terminal
|
|
61
|
+
sessions close, the machine leaves your fleet, and the service on that machine
|
|
62
|
+
stops receiving connections. You can re-add it at any time.
|
|
63
|
+
|
|
64
|
+
## Terminal
|
|
65
|
+
|
|
66
|
+
### Navigating to Terminal
|
|
67
|
+
|
|
68
|
+
Click **Terminal** in the sidebar, or click **Open terminal** on any online
|
|
69
|
+
machine card in Machines.
|
|
70
|
+
|
|
71
|
+
### Starting a session
|
|
72
|
+
|
|
73
|
+
The host picker shows all online and enrolled machines. Select a machine,
|
|
74
|
+
optionally set a custom command (default: \`bash\`), and click **Open**. The
|
|
75
|
+
terminal connects over the HQ relay.
|
|
76
|
+
|
|
77
|
+
### Multi-tab sessions
|
|
78
|
+
|
|
79
|
+
Once a session is open, click **+** in the tab strip to open another session
|
|
80
|
+
(on the same or a different machine). Each tab is an independent PTY; switching
|
|
81
|
+
tabs detaches and re-attaches the underlying session automatically.
|
|
82
|
+
|
|
83
|
+
### Reconnect behavior
|
|
84
|
+
|
|
85
|
+
If the connection drops, a reconnect banner appears. HQ retries up to 8 times
|
|
86
|
+
with exponential back-off. If all retries fail, click **Start a new session**
|
|
87
|
+
to open a fresh connection.
|
|
88
|
+
|
|
89
|
+
### Session end
|
|
90
|
+
|
|
91
|
+
When a process exits, the pane shows "Session ended" with the exit code and a
|
|
92
|
+
**Start a new session** button. The other tabs remain live.
|
|
93
|
+
|
|
94
|
+
## Sessions
|
|
95
|
+
|
|
96
|
+
### Navigating to Sessions
|
|
97
|
+
|
|
98
|
+
Click **Sessions** in the sidebar. Sessions lists cloud sandbox workspaces and
|
|
99
|
+
fleet-backed code environments.
|
|
100
|
+
|
|
101
|
+
### Creating a session
|
|
102
|
+
|
|
103
|
+
Click **New session**. The dialog lets you choose a host target (cloud sandbox
|
|
104
|
+
or a fleet machine) and optionally bind a repository. Ephemeral sessions are
|
|
105
|
+
cleaned up automatically when you navigate away.
|
|
106
|
+
|
|
107
|
+
### Session capabilities
|
|
108
|
+
|
|
109
|
+
- **Snapshot execution** — cloud sandbox sessions. Each command runs
|
|
110
|
+
independently; no persistent shell between runs. Shown in the transcript view.
|
|
111
|
+
- **Interactive** — fleet-backed sessions with a full PTY. Use the **Open in
|
|
112
|
+
terminal** button to reach the Terminal view for that session.
|
|
113
|
+
|
|
114
|
+
### Deleting a session
|
|
115
|
+
|
|
116
|
+
Click **Delete** in the session detail header. A confirmation dialog warns that
|
|
117
|
+
the workspace and all files inside it will be permanently removed.
|
|
118
|
+
|
|
119
|
+
## Related
|
|
120
|
+
|
|
121
|
+
:::card{title="See also"}
|
|
122
|
+
- [\`agents\`](agents) — agent management and execution contracts
|
|
123
|
+
- [\`fleet-pairing\`](fleet-pairing) — local fleet pairing and daemon setup
|
|
124
|
+
:::
|
|
125
|
+
`;
|
|
126
|
+
const descriptor = {
|
|
127
|
+
kind: 'docs/topic',
|
|
128
|
+
id: 'hq.surfaces',
|
|
129
|
+
title: 'HQ Fleet & Terminal Surfaces',
|
|
130
|
+
summary: 'User flows for Machines, Terminal, and Sessions in HQ',
|
|
131
|
+
body: {
|
|
132
|
+
type: 'markdown',
|
|
133
|
+
sourceType: 'raw',
|
|
134
|
+
source: hqSurfacesMarkdown
|
|
135
|
+
},
|
|
136
|
+
parent: 'hq',
|
|
137
|
+
order: 10,
|
|
138
|
+
tags: ['hq', 'fleet', 'terminal', 'sessions', 'machines'],
|
|
139
|
+
surfaces: ['web'],
|
|
140
|
+
hardware: ['cloud', 'consumer'],
|
|
141
|
+
enabled: true,
|
|
142
|
+
man: {
|
|
143
|
+
name: 'hq.surfaces — Machines, Terminal, and Sessions in HQ',
|
|
144
|
+
section: 1,
|
|
145
|
+
synopsis: 'vibes man hq.surfaces',
|
|
146
|
+
options: [],
|
|
147
|
+
examples: [
|
|
148
|
+
{
|
|
149
|
+
description: 'Open a terminal on a registered machine',
|
|
150
|
+
command: 'navigate to /terminal?host=<machine-id>'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
description: 'Add a new machine via install command',
|
|
154
|
+
command: 'navigate to /fleet → Add machine → Install'
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
seeAlso: ['agents', 'fleet-pairing']
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
export default descriptor;
|
|
161
|
+
//# sourceMappingURL=hq.surfaces.docs.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq.surfaces.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/hq.surfaces.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH1B,CAAC;AAEF,MAAM,UAAU,GAAG;IAClB,IAAI,EAAE,YAAqB;IAC3B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,8BAA8B;IACrC,OAAO,EAAE,uDAAuD;IAChE,IAAI,EAAE;QACL,IAAI,EAAE,UAAmB;QACzB,UAAU,EAAE,KAAc;QAC1B,MAAM,EAAE,kBAAkB;KAC1B;IACD,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAU;IACxC,OAAO,EAAE,IAAI;IACb,GAAG,EAAE;QACJ,IAAI,EAAE,sDAAsD;QAC5D,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,uBAAuB;QACjC,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACT;gBACC,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,yCAAyC;aAClD;YACD;gBACC,WAAW,EAAE,uCAAuC;gBACpD,OAAO,EAAE,4CAA4C;aACrD;SACD;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;KACpC;CACD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-flow docs for the HQ Terminal surface.
|
|
3
|
+
*/
|
|
4
|
+
declare const descriptor: {
|
|
5
|
+
kind: "docs/topic";
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
summary: string;
|
|
9
|
+
body: {
|
|
10
|
+
type: "markdown";
|
|
11
|
+
sourceType: "raw";
|
|
12
|
+
source: string;
|
|
13
|
+
};
|
|
14
|
+
parent: string;
|
|
15
|
+
order: number;
|
|
16
|
+
tags: string[];
|
|
17
|
+
surfaces: readonly ["in-app", "web"];
|
|
18
|
+
hardware: readonly ["consumer"];
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
};
|
|
21
|
+
export default descriptor;
|
|
22
|
+
//# sourceMappingURL=hq.terminal.docs.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq.terminal.docs.descriptor.d.ts","sourceRoot":"","sources":["../../src/docs/hq.terminal.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmEH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;CAgBf,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-flow docs for the HQ Terminal surface.
|
|
3
|
+
*/
|
|
4
|
+
const markdown = `---
|
|
5
|
+
title: Terminal
|
|
6
|
+
summary: Open interactive terminal sessions on this machine or any connected machine
|
|
7
|
+
tags: [hq, terminal, sessions, pty]
|
|
8
|
+
parent: hq
|
|
9
|
+
order: 20
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Terminal
|
|
13
|
+
|
|
14
|
+
The Terminal page gives you a full interactive shell — on this Mac, or on any machine you've
|
|
15
|
+
connected through [Machines](hq.machines).
|
|
16
|
+
|
|
17
|
+
## Opening a session
|
|
18
|
+
|
|
19
|
+
1. Go to **Terminal** in the sidebar.
|
|
20
|
+
2. Pick a machine from the host picker (defaults to This machine).
|
|
21
|
+
3. Choose or type the shell or command to run.
|
|
22
|
+
4. Click **Open** — the terminal opens immediately.
|
|
23
|
+
|
|
24
|
+
## Switching between sessions (tabs)
|
|
25
|
+
|
|
26
|
+
Each open session appears as a tab at the top. Click a tab to switch. The previous session
|
|
27
|
+
keeps running in the background and reattaches when you switch back.
|
|
28
|
+
|
|
29
|
+
Click **+** to open a new session while keeping the current one running.
|
|
30
|
+
|
|
31
|
+
## Closing a session
|
|
32
|
+
|
|
33
|
+
Click the × on a tab to close it. This kills the running shell. If the session has unsaved work
|
|
34
|
+
you'll be prompted to confirm.
|
|
35
|
+
|
|
36
|
+
## Reconnecting after a network drop
|
|
37
|
+
|
|
38
|
+
If the connection drops, a yellow banner appears. HQ retries automatically up to 8 times with
|
|
39
|
+
increasing delays. You'll see the attempt count and estimated time until the next retry.
|
|
40
|
+
|
|
41
|
+
If reconnection fails permanently, click **Start a new session** to open a fresh one.
|
|
42
|
+
|
|
43
|
+
## Denied commands
|
|
44
|
+
|
|
45
|
+
Some commands are blocked by safety policies. When a command is denied, the terminal shows a
|
|
46
|
+
readable message explaining which rule fired and where to change it. Contact your administrator
|
|
47
|
+
to adjust the policy if you need access.
|
|
48
|
+
|
|
49
|
+
## Keyboard shortcuts
|
|
50
|
+
|
|
51
|
+
Standard terminal shortcuts work as expected: Ctrl-C, Ctrl-D, Ctrl-Z, arrow history, Tab
|
|
52
|
+
completion. The terminal is a full PTY — interactive programs like \`vim\`, \`htop\`, and \`less\`
|
|
53
|
+
all work.
|
|
54
|
+
|
|
55
|
+
## Remote machines
|
|
56
|
+
|
|
57
|
+
Select any online machine from the host picker to open a shell there. If no machines are
|
|
58
|
+
connected, the picker shows a link to [Machines](hq.machines) where you can add one.
|
|
59
|
+
|
|
60
|
+
If a remote machine goes offline mid-session, the reconnect banner appears and the same retry
|
|
61
|
+
logic applies.
|
|
62
|
+
|
|
63
|
+
## Related topics
|
|
64
|
+
|
|
65
|
+
- [hq.machines](hq.machines) — connect a machine so it appears in the host picker
|
|
66
|
+
- [hq.sessions](hq.sessions) — longer-lived sessions with workspace browsing
|
|
67
|
+
`;
|
|
68
|
+
const descriptor = {
|
|
69
|
+
kind: 'docs/topic',
|
|
70
|
+
id: 'hq.terminal',
|
|
71
|
+
title: 'Terminal',
|
|
72
|
+
summary: 'Open interactive terminal sessions on this machine or any connected machine',
|
|
73
|
+
body: {
|
|
74
|
+
type: 'markdown',
|
|
75
|
+
sourceType: 'raw',
|
|
76
|
+
source: markdown
|
|
77
|
+
},
|
|
78
|
+
parent: 'hq',
|
|
79
|
+
order: 20,
|
|
80
|
+
tags: ['hq', 'terminal', 'sessions', 'pty'],
|
|
81
|
+
surfaces: ['in-app', 'web'],
|
|
82
|
+
hardware: ['consumer'],
|
|
83
|
+
enabled: true
|
|
84
|
+
};
|
|
85
|
+
export default descriptor;
|
|
86
|
+
//# sourceMappingURL=hq.terminal.docs.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hq.terminal.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/hq.terminal.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DhB,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,YAAqB;IAC3B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,6EAA6E;IACtF,IAAI,EAAE;QACJ,IAAI,EAAE,UAAmB;QACzB,UAAU,EAAE,KAAc;QAC1B,MAAM,EAAE,QAAQ;KACjB;IACD,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAU;IACpC,QAAQ,EAAE,CAAC,UAAU,CAAU;IAC/B,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FrictionSignalWithBackend, type ListFrictionSignalsFilter, type FrictionRuntime } from './store.ts';
|
|
2
|
+
import type { FrictionDisposition } from './schemas/disposition.ts';
|
|
3
|
+
export type FrictionClusterBackend = FrictionSignalWithBackend['backend'] | 'mixed';
|
|
4
|
+
export interface FrictionCluster {
|
|
5
|
+
signatureHash: string;
|
|
6
|
+
representative: FrictionSignalWithBackend;
|
|
7
|
+
count: number;
|
|
8
|
+
firstSeen: string;
|
|
9
|
+
lastSeen: string;
|
|
10
|
+
backend: FrictionClusterBackend;
|
|
11
|
+
latestDisposition?: FrictionDisposition;
|
|
12
|
+
}
|
|
13
|
+
export type LatestDispositionsResolver = (signalIds: readonly string[]) => Promise<Map<string, FrictionDisposition>>;
|
|
14
|
+
/**
|
|
15
|
+
* Materialize the read-only signature projection on demand. New friction emits
|
|
16
|
+
* are aggregate rows with occurrence-aware counts; legacy rows remain readable
|
|
17
|
+
* through the same projection. This combines the projection with the latest
|
|
18
|
+
* lifecycle disposition without writing a second cluster store.
|
|
19
|
+
*/
|
|
20
|
+
export declare function materializeFrictionClusters(signals: readonly FrictionSignalWithBackend[], resolveLatestDispositions: LatestDispositionsResolver): Promise<FrictionCluster[]>;
|
|
21
|
+
/** Read clusters through the canonical friction store. */
|
|
22
|
+
export declare function listFrictionClusters(runtime: FrictionRuntime, filter?: ListFrictionSignalsFilter): Promise<FrictionCluster[]>;
|
|
23
|
+
//# sourceMappingURL=clusters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clusters.d.ts","sourceRoot":"","sources":["../../src/friction/clusters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;AAEpF,MAAM,WAAW,eAAe;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,yBAAyB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,sBAAsB,CAAC;IAChC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED,MAAM,MAAM,0BAA0B,GAAG,CACxC,SAAS,EAAE,SAAS,MAAM,EAAE,KACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAS/C;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,SAAS,yBAAyB,EAAE,EAC7C,yBAAyB,EAAE,0BAA0B,GACnD,OAAO,CAAC,eAAe,EAAE,CAAC,CAuD5B;AAED,0DAA0D;AAC1D,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,GAAE,yBAA8B,GACpC,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { latestDispositionsBySignal, listFrictionSignalsWithBackend } from "./store.js";
|
|
2
|
+
function newestSignal(current, candidate) {
|
|
3
|
+
return candidate.createdAt > current.createdAt ? candidate : current;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Materialize the read-only signature projection on demand. New friction emits
|
|
7
|
+
* are aggregate rows with occurrence-aware counts; legacy rows remain readable
|
|
8
|
+
* through the same projection. This combines the projection with the latest
|
|
9
|
+
* lifecycle disposition without writing a second cluster store.
|
|
10
|
+
*/
|
|
11
|
+
export async function materializeFrictionClusters(signals, resolveLatestDispositions) {
|
|
12
|
+
const grouped = new Map();
|
|
13
|
+
for (const signal of signals) {
|
|
14
|
+
const existing = grouped.get(signal.signatureHash);
|
|
15
|
+
if (existing) {
|
|
16
|
+
existing.representative = newestSignal(existing.representative, signal);
|
|
17
|
+
existing.count += 1;
|
|
18
|
+
existing.firstSeen = signal.createdAt < existing.firstSeen ? signal.createdAt : existing.firstSeen;
|
|
19
|
+
existing.lastSeen = signal.createdAt > existing.lastSeen ? signal.createdAt : existing.lastSeen;
|
|
20
|
+
existing.backends.add(signal.backend);
|
|
21
|
+
existing.signalIds.push(signal.id);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
grouped.set(signal.signatureHash, {
|
|
25
|
+
representative: signal,
|
|
26
|
+
count: 1,
|
|
27
|
+
firstSeen: signal.createdAt,
|
|
28
|
+
lastSeen: signal.createdAt,
|
|
29
|
+
backends: new Set([signal.backend]),
|
|
30
|
+
signalIds: [signal.id]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const latestBySignal = await resolveLatestDispositions(signals.map((signal) => signal.id));
|
|
34
|
+
return [...grouped.entries()]
|
|
35
|
+
.map(([signatureHash, cluster]) => {
|
|
36
|
+
const latestDisposition = cluster.signalIds.reduce((latest, signalId) => {
|
|
37
|
+
const candidate = latestBySignal.get(signalId);
|
|
38
|
+
return !candidate || (latest && latest.createdAt >= candidate.createdAt) ? latest : candidate;
|
|
39
|
+
}, undefined);
|
|
40
|
+
return {
|
|
41
|
+
signatureHash,
|
|
42
|
+
representative: cluster.representative,
|
|
43
|
+
count: cluster.count,
|
|
44
|
+
firstSeen: cluster.firstSeen,
|
|
45
|
+
lastSeen: cluster.lastSeen,
|
|
46
|
+
backend: cluster.backends.size === 1 ? [...cluster.backends][0] : 'mixed',
|
|
47
|
+
latestDisposition
|
|
48
|
+
};
|
|
49
|
+
})
|
|
50
|
+
.sort((a, b) => b.lastSeen.localeCompare(a.lastSeen));
|
|
51
|
+
}
|
|
52
|
+
/** Read clusters through the canonical friction store. */
|
|
53
|
+
export async function listFrictionClusters(runtime, filter = {}) {
|
|
54
|
+
return materializeFrictionClusters(await listFrictionSignalsWithBackend(runtime, filter), (signalIds) => latestDispositionsBySignal(runtime, signalIds));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=clusters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clusters.js","sourceRoot":"","sources":["../../src/friction/clusters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { FrictionSignal } from './schemas/signal.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Fingerprint version 2 deliberately excludes projection/body version and
|
|
4
|
+
* volatile occurrence provenance. It identifies the causal report, not the
|
|
5
|
+
* way a host happened to serialize or replay it.
|
|
6
|
+
*/
|
|
7
|
+
export declare const FRICTION_FINGERPRINT_VERSION: 2;
|
|
8
|
+
export interface FrictionFingerprintInput {
|
|
9
|
+
orgId: string;
|
|
10
|
+
source: FrictionSignal['source'];
|
|
11
|
+
surface: string;
|
|
12
|
+
observed: string;
|
|
13
|
+
expected?: string;
|
|
14
|
+
repro?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Compute the stable, tenant-scoped causal identity for a friction report.
|
|
18
|
+
* Web Crypto keeps this helper safe for both Bun consumers and workerd.
|
|
19
|
+
*/
|
|
20
|
+
export declare function computeFrictionFingerprint(input: FrictionFingerprintInput): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Fingerprint version 3 identifies a reported problem by its typed context
|
|
23
|
+
* instead of its free text (defect 2: a human report hashed its description,
|
|
24
|
+
* so two reports of one crash never merged, while the hash still pretended to
|
|
25
|
+
* dedupe).
|
|
26
|
+
*
|
|
27
|
+
* - A report that carries errors is keyed by the crash: org, app, route
|
|
28
|
+
* template, and the latest error's normalized message and top stack frame.
|
|
29
|
+
* Repeated crashes merge whatever the reporters wrote.
|
|
30
|
+
* - A report without errors is a distinct human report: it is keyed by its
|
|
31
|
+
* first occurrence id, so a retried submit is idempotent but two people's
|
|
32
|
+
* reports never merge.
|
|
33
|
+
*
|
|
34
|
+
* Signals without report context keep version 2 unchanged, so existing rows
|
|
35
|
+
* and other emitters keep merging under the `(orgId, fingerprintVersion,
|
|
36
|
+
* fingerprint)` index.
|
|
37
|
+
*/
|
|
38
|
+
export declare const FRICTION_REPORT_FINGERPRINT_VERSION: 3;
|
|
39
|
+
export type FrictionSignalFingerprintInput = Pick<FrictionSignal, 'id' | 'orgId' | 'source' | 'surface' | 'observed' | 'expected' | 'repro' | 'context' | 'occurrenceId' | 'occurrenceIds'>;
|
|
40
|
+
export interface FrictionSignalFingerprint {
|
|
41
|
+
version: number;
|
|
42
|
+
/** The bare digest, also stored as `signatureHash`. */
|
|
43
|
+
hash: string;
|
|
44
|
+
/** `v<version>:<hash>`, the stored `fingerprint`. */
|
|
45
|
+
fingerprint: string;
|
|
46
|
+
}
|
|
47
|
+
/** Volatile tokens (ids, hashes, numbers, quoted values) collapse so one crash has one message. */
|
|
48
|
+
export declare function normalizeErrorMessage(message: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* The first stack frame, without line/column, query, or content-hashed chunk
|
|
51
|
+
* names, so one crash keeps one frame across builds of the same source.
|
|
52
|
+
*/
|
|
53
|
+
export declare function topStackFrame(stack: string | undefined): string;
|
|
54
|
+
/** The versioned causal fingerprint of one signal; the one owner every writer uses. */
|
|
55
|
+
export declare function computeFrictionSignalFingerprint(signal: FrictionSignalFingerprintInput): Promise<FrictionSignalFingerprint>;
|
|
56
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/friction/fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAG,CAAU,CAAC;AAMvD,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,mCAAmC,EAAG,CAAU,CAAC;AAE9D,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAChD,cAAc,EACd,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,CACxH,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAc/D;AAaD,uFAAuF;AACvF,wBAAsB,gCAAgC,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA0BjI"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fingerprint version 2 deliberately excludes projection/body version and
|
|
3
|
+
* volatile occurrence provenance. It identifies the causal report, not the
|
|
4
|
+
* way a host happened to serialize or replay it.
|
|
5
|
+
*/
|
|
6
|
+
export const FRICTION_FINGERPRINT_VERSION = 2;
|
|
7
|
+
function normalize(value) {
|
|
8
|
+
return (value ?? '').toLowerCase().trim().replace(/\s+/g, ' ');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Compute the stable, tenant-scoped causal identity for a friction report.
|
|
12
|
+
* Web Crypto keeps this helper safe for both Bun consumers and workerd.
|
|
13
|
+
*/
|
|
14
|
+
export async function computeFrictionFingerprint(input) {
|
|
15
|
+
const payload = JSON.stringify({
|
|
16
|
+
version: FRICTION_FINGERPRINT_VERSION,
|
|
17
|
+
orgId: input.orgId.trim(),
|
|
18
|
+
source: normalize(input.source),
|
|
19
|
+
surface: normalize(input.surface),
|
|
20
|
+
observed: normalize(input.observed),
|
|
21
|
+
expected: normalize(input.expected),
|
|
22
|
+
repro: normalize(input.repro)
|
|
23
|
+
});
|
|
24
|
+
const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(payload));
|
|
25
|
+
return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Fingerprint version 3 identifies a reported problem by its typed context
|
|
29
|
+
* instead of its free text (defect 2: a human report hashed its description,
|
|
30
|
+
* so two reports of one crash never merged, while the hash still pretended to
|
|
31
|
+
* dedupe).
|
|
32
|
+
*
|
|
33
|
+
* - A report that carries errors is keyed by the crash: org, app, route
|
|
34
|
+
* template, and the latest error's normalized message and top stack frame.
|
|
35
|
+
* Repeated crashes merge whatever the reporters wrote.
|
|
36
|
+
* - A report without errors is a distinct human report: it is keyed by its
|
|
37
|
+
* first occurrence id, so a retried submit is idempotent but two people's
|
|
38
|
+
* reports never merge.
|
|
39
|
+
*
|
|
40
|
+
* Signals without report context keep version 2 unchanged, so existing rows
|
|
41
|
+
* and other emitters keep merging under the `(orgId, fingerprintVersion,
|
|
42
|
+
* fingerprint)` index.
|
|
43
|
+
*/
|
|
44
|
+
export const FRICTION_REPORT_FINGERPRINT_VERSION = 3;
|
|
45
|
+
/** Volatile tokens (ids, hashes, numbers, quoted values) collapse so one crash has one message. */
|
|
46
|
+
export function normalizeErrorMessage(message) {
|
|
47
|
+
return normalize(message)
|
|
48
|
+
.replace(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g, '<id>')
|
|
49
|
+
.replace(/\b[0-9a-f]{8,}\b/g, '<hex>')
|
|
50
|
+
.replace(/(["'`]).*?\1/g, '<value>')
|
|
51
|
+
.replace(/\d+/g, '<n>');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The first stack frame, without line/column, query, or content-hashed chunk
|
|
55
|
+
* names, so one crash keeps one frame across builds of the same source.
|
|
56
|
+
*/
|
|
57
|
+
export function topStackFrame(stack) {
|
|
58
|
+
if (!stack)
|
|
59
|
+
return '';
|
|
60
|
+
// V8 opens with `Name: message`, which may itself contain `@`; frames start
|
|
61
|
+
// with `at ` (V8) or hold `fn@url` (Firefox, Safari), which never has a space before `@`.
|
|
62
|
+
const frame = stack
|
|
63
|
+
.split('\n')
|
|
64
|
+
.map((line) => line.trim())
|
|
65
|
+
.find((line) => line.startsWith('at ') || /^[^\s@]*@\S/.test(line));
|
|
66
|
+
if (!frame)
|
|
67
|
+
return '';
|
|
68
|
+
return frame
|
|
69
|
+
.replace(/\?[^\s):]*/g, '')
|
|
70
|
+
.replace(/(:\d+)+(?=\)?$)/, '')
|
|
71
|
+
.replace(/\.[A-Za-z0-9_-]{6,}(?=\.(?:m?js|ts)\b)/g, '')
|
|
72
|
+
.toLowerCase();
|
|
73
|
+
}
|
|
74
|
+
function latestError(errors) {
|
|
75
|
+
let latest = errors[0];
|
|
76
|
+
for (const error of errors)
|
|
77
|
+
if (latest && error.at >= latest.at)
|
|
78
|
+
latest = error;
|
|
79
|
+
return latest;
|
|
80
|
+
}
|
|
81
|
+
async function sha256(payload) {
|
|
82
|
+
const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(payload));
|
|
83
|
+
return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
84
|
+
}
|
|
85
|
+
/** The versioned causal fingerprint of one signal; the one owner every writer uses. */
|
|
86
|
+
export async function computeFrictionSignalFingerprint(signal) {
|
|
87
|
+
const context = signal.context;
|
|
88
|
+
if (!context) {
|
|
89
|
+
const hash = await computeFrictionFingerprint(signal);
|
|
90
|
+
return { version: FRICTION_FINGERPRINT_VERSION, hash, fingerprint: `v${FRICTION_FINGERPRINT_VERSION}:${hash}` };
|
|
91
|
+
}
|
|
92
|
+
const error = latestError(context.errors);
|
|
93
|
+
const payload = error
|
|
94
|
+
? {
|
|
95
|
+
version: FRICTION_REPORT_FINGERPRINT_VERSION,
|
|
96
|
+
kind: 'crash',
|
|
97
|
+
orgId: signal.orgId.trim(),
|
|
98
|
+
source: normalize(signal.source),
|
|
99
|
+
app: context.appClientId ?? '',
|
|
100
|
+
route: normalize(context.route),
|
|
101
|
+
message: normalizeErrorMessage(error.message),
|
|
102
|
+
frame: topStackFrame(error.stack)
|
|
103
|
+
}
|
|
104
|
+
: {
|
|
105
|
+
version: FRICTION_REPORT_FINGERPRINT_VERSION,
|
|
106
|
+
kind: 'report',
|
|
107
|
+
orgId: signal.orgId.trim(),
|
|
108
|
+
occurrence: signal.occurrenceIds?.find((id) => id.trim()) ?? (signal.occurrenceId?.trim() || signal.id)
|
|
109
|
+
};
|
|
110
|
+
const hash = await sha256(JSON.stringify(payload));
|
|
111
|
+
return { version: FRICTION_REPORT_FINGERPRINT_VERSION, hash, fingerprint: `v${FRICTION_REPORT_FINGERPRINT_VERSION}:${hash}` };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/friction/fingerprint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { StorageRecordDescriptorInput } from '@vibesdotdev/storage/schemas/record';
|
|
2
|
+
export declare const osFrictionDispositionsRecordDescriptor: StorageRecordDescriptorInput;
|
|
3
|
+
export default osFrictionDispositionsRecordDescriptor;
|
|
4
|
+
//# sourceMappingURL=friction-dispositions.record.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friction-dispositions.record.descriptor.d.ts","sourceRoot":"","sources":["../../src/friction/friction-dispositions.record.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAGxF,eAAO,MAAM,sCAAsC,EAAE,4BAgCpD,CAAC;AAEF,eAAe,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FrictionDispositionSchema } from "./schemas/disposition.js";
|
|
2
|
+
export const osFrictionDispositionsRecordDescriptor = {
|
|
3
|
+
kind: 'storage/record',
|
|
4
|
+
id: 'os.friction-dispositions',
|
|
5
|
+
name: 'OS Friction Dispositions',
|
|
6
|
+
description: 'Append-only triage and outcome history for OS friction signals',
|
|
7
|
+
schema: FrictionDispositionSchema,
|
|
8
|
+
tableName: 'os_friction_dispositions',
|
|
9
|
+
primaryKey: 'id',
|
|
10
|
+
relations: {},
|
|
11
|
+
indexes: [
|
|
12
|
+
{ fields: ['signalId'], unique: false },
|
|
13
|
+
{ fields: ['disposition'], unique: false },
|
|
14
|
+
{ fields: ['createdAt'], unique: false }
|
|
15
|
+
],
|
|
16
|
+
version: 1,
|
|
17
|
+
timestamps: false,
|
|
18
|
+
autoId: false,
|
|
19
|
+
allowedAdapters: ['storage.localdb'],
|
|
20
|
+
defaultAdapter: 'storage.localdb',
|
|
21
|
+
adapterConfig: {
|
|
22
|
+
'storage.localdb': { dbName: 'os.db', scope: 'global' }
|
|
23
|
+
},
|
|
24
|
+
scope: 'global',
|
|
25
|
+
validateOnWrite: false,
|
|
26
|
+
validateOnRead: false,
|
|
27
|
+
versioning: false,
|
|
28
|
+
audit: false,
|
|
29
|
+
changeTracking: false,
|
|
30
|
+
internal: false,
|
|
31
|
+
softDelete: false,
|
|
32
|
+
namespace: 'os.friction-dispositions',
|
|
33
|
+
tags: ['os', 'friction', 'dispositions']
|
|
34
|
+
};
|
|
35
|
+
export default osFrictionDispositionsRecordDescriptor;
|
|
36
|
+
//# sourceMappingURL=friction-dispositions.record.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friction-dispositions.record.descriptor.js","sourceRoot":"","sources":["../../src/friction/friction-dispositions.record.descriptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,CAAC,MAAM,sCAAsC,GAAiC;IACnF,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,0BAA0B;IAC9B,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,gEAAgE;IAC7E,MAAM,EAAE,yBAAyB;IACjC,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,EAAE;IACb,OAAO,EAAE;QACR,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QACvC,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1C,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;KACxC;IACD,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,KAAK;IACb,eAAe,EAAE,CAAC,iBAAiB,CAAC;IACpC,cAAc,EAAE,iBAAiB;IACjC,aAAa,EAAE;QACd,iBAAiB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;KACvD;IACD,KAAK,EAAE,QAAQ;IACf,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,0BAA0B;IACrC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC;CACxC,CAAC;AAEF,eAAe,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `os.friction-signals` v2 adds the optional typed `context` (a reported
|
|
3
|
+
* problem's page facts, `schemas/report.ts`). Migration path: the field is
|
|
4
|
+
* additive and optional, so v1 rows read unchanged under v2. Local rows are
|
|
5
|
+
* JSON documents (no SQL change); a cloud adapter with explicit columns adds
|
|
6
|
+
* a nullable `context` JSON column (hq-web D1, P1-5) before writing v2 rows.
|
|
7
|
+
* Report rows fingerprint as v3 (`fingerprint.ts`); others stay v2.
|
|
8
|
+
*/
|
|
9
|
+
import type { StorageRecordDescriptorInput } from '@vibesdotdev/storage/schemas/record';
|
|
10
|
+
export declare const osFrictionSignalsRecordDescriptor: StorageRecordDescriptorInput;
|
|
11
|
+
export default osFrictionSignalsRecordDescriptor;
|
|
12
|
+
//# sourceMappingURL=friction-signals.record.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friction-signals.record.descriptor.d.ts","sourceRoot":"","sources":["../../src/friction/friction-signals.record.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAGxF,eAAO,MAAM,iCAAiC,EAAE,4BAiD/C,CAAC;AAEF,eAAe,iCAAiC,CAAC"}
|