@pellux/goodvibes-sdk 0.18.29 → 0.18.30
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/dist/_internal/platform/config/schema-domain-core.d.ts +1 -0
- package/dist/_internal/platform/config/schema-domain-core.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-core.js +7 -0
- package/dist/_internal/platform/config/schema-types.d.ts +3 -2
- package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
- package/dist/_internal/platform/config/tool-llm.d.ts.map +1 -1
- package/dist/_internal/platform/config/tool-llm.js +3 -0
- package/dist/_internal/platform/pairing/companion-token.d.ts +45 -0
- package/dist/_internal/platform/pairing/companion-token.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/companion-token.js +74 -0
- package/dist/_internal/platform/pairing/connection-info.d.ts +10 -0
- package/dist/_internal/platform/pairing/connection-info.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/connection-info.js +27 -0
- package/dist/_internal/platform/pairing/index.d.ts +6 -0
- package/dist/_internal/platform/pairing/index.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/index.js +3 -0
- package/dist/_internal/platform/pairing/qr-generator.d.ts +20 -0
- package/dist/_internal/platform/pairing/qr-generator.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/qr-generator.js +452 -0
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-domain-core.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"schema-domain-core.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,EAmX3D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,EA+H3D,CAAC"}
|
|
@@ -82,6 +82,7 @@ export const coreConfigDefaults = {
|
|
|
82
82
|
httpListener: false,
|
|
83
83
|
},
|
|
84
84
|
tools: {
|
|
85
|
+
llmEnabled: false,
|
|
85
86
|
llmProvider: '',
|
|
86
87
|
llmModel: '',
|
|
87
88
|
autoHeal: false,
|
|
@@ -499,6 +500,12 @@ export const coreTailConfigSettings = [
|
|
|
499
500
|
default: false,
|
|
500
501
|
description: 'Enable HTTP webhook listener for receiving external events',
|
|
501
502
|
},
|
|
503
|
+
{
|
|
504
|
+
key: 'tools.llmEnabled',
|
|
505
|
+
type: 'boolean',
|
|
506
|
+
default: false,
|
|
507
|
+
description: 'Enable dedicated tool LLM for internal operations (off = tools use the main conversation model only when needed)',
|
|
508
|
+
},
|
|
502
509
|
{
|
|
503
510
|
key: 'tools.llmProvider',
|
|
504
511
|
type: 'string',
|
|
@@ -294,6 +294,7 @@ export interface GoodVibesConfig {
|
|
|
294
294
|
httpListener: boolean;
|
|
295
295
|
};
|
|
296
296
|
tools: {
|
|
297
|
+
llmEnabled: boolean;
|
|
297
298
|
llmProvider: string;
|
|
298
299
|
llmModel: string;
|
|
299
300
|
autoHeal: boolean;
|
|
@@ -334,7 +335,7 @@ export interface ConfigSetting {
|
|
|
334
335
|
validate?: (value: unknown) => boolean;
|
|
335
336
|
}
|
|
336
337
|
/** Dot-path config keys for all settings. */
|
|
337
|
-
export type ConfigKey = 'display.stream' | 'display.lineNumbers' | 'display.collapseThreshold' | 'display.theme' | 'display.showThinking' | 'display.showReasoningSummary' | 'display.showTokenSpeed' | 'display.showToolPreview' | 'provider.reasoningEffort' | 'provider.model' | 'provider.provider' | 'provider.embeddingProvider' | 'provider.systemPromptFile' | 'behavior.autoApprove' | 'behavior.autoCompactThreshold' | 'behavior.staleContextWarnings' | 'behavior.saveHistory' | 'behavior.notifyOnComplete' | 'behavior.suggestAlternativeOnProviderFail' | 'behavior.hitlMode' | 'behavior.returnContextMode' | 'behavior.guidanceMode' | 'storage.secretPolicy' | 'permissions.mode' | 'permissions.tools.read' | 'permissions.tools.write' | 'permissions.tools.edit' | 'permissions.tools.exec' | 'permissions.tools.find' | 'permissions.tools.fetch' | 'permissions.tools.analyze' | 'permissions.tools.inspect' | 'permissions.tools.agent' | 'permissions.tools.state' | 'permissions.tools.workflow' | 'permissions.tools.registry' | 'permissions.tools.delegate' | 'permissions.tools.mcp' | 'orchestration.recursionEnabled' | 'orchestration.maxActiveAgents' | 'orchestration.maxDepth' | 'sandbox.replIsolation' | 'sandbox.mcpIsolation' | 'sandbox.windowsMode' | 'sandbox.vmBackend' | 'sandbox.qemuBinary' | 'sandbox.qemuImagePath' | 'sandbox.qemuExecWrapper' | 'sandbox.qemuGuestHost' | 'sandbox.qemuGuestPort' | 'sandbox.qemuGuestUser' | 'sandbox.qemuWorkspacePath' | 'sandbox.qemuSessionMode' | 'ui.voiceEnabled' | 'ui.systemMessages' | 'ui.operationalMessages' | 'ui.wrfcMessages' | 'release.channel' | 'danger.daemon' | 'danger.httpListener' | 'tools.llmProvider' | 'tools.llmModel' | 'tools.autoHeal' | 'tools.defaultTokenBudget' | 'tools.hooksFile' | 'wrfc.scoreThreshold' | 'wrfc.maxFixAttempts' | 'wrfc.autoCommit' | 'cache.enabled' | 'cache.stableTtl' | 'cache.monitorHitRate' | 'cache.hitRateWarningThreshold' | 'helper.enabled' | 'helper.globalProvider' | 'helper.globalModel' | 'automation.enabled' | 'automation.maxConcurrentRuns' | 'automation.runHistoryLimit' | 'automation.defaultTimeoutMs' | 'automation.catchUpWindowMinutes' | 'automation.failureCooldownMs' | 'automation.deleteAfterRun' | 'controlPlane.enabled' | 'controlPlane.host' | 'controlPlane.port' | 'controlPlane.baseUrl' | 'controlPlane.streamMode' | 'controlPlane.allowRemote' | 'controlPlane.trustProxy' | 'controlPlane.tls.mode' | 'controlPlane.tls.certFile' | 'controlPlane.tls.keyFile' | 'httpListener.host' | 'httpListener.port' | 'httpListener.trustProxy' | 'httpListener.tls.mode' | 'httpListener.tls.certFile' | 'httpListener.tls.keyFile' | 'web.enabled' | 'web.host' | 'web.port' | 'web.publicBaseUrl' | 'web.staticAssetsDir' | 'surfaces.slack.enabled' | 'surfaces.slack.signingSecret' | 'surfaces.slack.botToken' | 'surfaces.slack.appToken' | 'surfaces.slack.defaultChannel' | 'surfaces.slack.workspaceId' | 'surfaces.discord.enabled' | 'surfaces.discord.publicKey' | 'surfaces.discord.botToken' | 'surfaces.discord.applicationId' | 'surfaces.discord.defaultChannelId' | 'surfaces.discord.guildId' | 'surfaces.ntfy.enabled' | 'surfaces.ntfy.baseUrl' | 'surfaces.ntfy.topic' | 'surfaces.ntfy.token' | 'surfaces.ntfy.defaultPriority' | 'surfaces.webhook.enabled' | 'surfaces.webhook.defaultTarget' | 'surfaces.webhook.timeoutMs' | 'surfaces.webhook.secret' | 'surfaces.telegram.enabled' | 'surfaces.telegram.botToken' | 'surfaces.telegram.webhookSecret' | 'surfaces.telegram.defaultChatId' | 'surfaces.telegram.botUsername' | 'surfaces.telegram.mode' | 'surfaces.googleChat.enabled' | 'surfaces.googleChat.webhookUrl' | 'surfaces.googleChat.verificationToken' | 'surfaces.googleChat.appId' | 'surfaces.googleChat.spaceId' | 'surfaces.signal.enabled' | 'surfaces.signal.bridgeUrl' | 'surfaces.signal.account' | 'surfaces.signal.token' | 'surfaces.signal.defaultRecipient' | 'surfaces.whatsapp.enabled' | 'surfaces.whatsapp.provider' | 'surfaces.whatsapp.accessToken' | 'surfaces.whatsapp.verifyToken' | 'surfaces.whatsapp.signingSecret' | 'surfaces.whatsapp.phoneNumberId' | 'surfaces.whatsapp.businessAccountId' | 'surfaces.whatsapp.defaultRecipient' | 'surfaces.imessage.enabled' | 'surfaces.imessage.bridgeUrl' | 'surfaces.imessage.account' | 'surfaces.imessage.token' | 'surfaces.imessage.defaultChatId' | 'surfaces.msteams.enabled' | 'surfaces.msteams.appId' | 'surfaces.msteams.appPassword' | 'surfaces.msteams.tenantId' | 'surfaces.msteams.serviceUrl' | 'surfaces.msteams.botId' | 'surfaces.msteams.defaultConversationId' | 'surfaces.msteams.defaultChannelId' | 'surfaces.bluebubbles.enabled' | 'surfaces.bluebubbles.serverUrl' | 'surfaces.bluebubbles.password' | 'surfaces.bluebubbles.account' | 'surfaces.bluebubbles.defaultChatGuid' | 'surfaces.mattermost.enabled' | 'surfaces.mattermost.baseUrl' | 'surfaces.mattermost.botToken' | 'surfaces.mattermost.teamId' | 'surfaces.mattermost.defaultChannelId' | 'surfaces.matrix.enabled' | 'surfaces.matrix.homeserverUrl' | 'surfaces.matrix.accessToken' | 'surfaces.matrix.userId' | 'surfaces.matrix.defaultRoomId' | 'watchers.enabled' | 'watchers.pollIntervalMs' | 'watchers.heartbeatIntervalMs' | 'watchers.recoveryWindowMinutes' | 'service.enabled' | 'service.autostart' | 'service.restartOnFailure' | 'service.platform' | 'service.serviceName' | 'service.logPath' | 'network.outboundTls.mode' | 'network.outboundTls.customCaFile' | 'network.outboundTls.customCaDir' | 'network.outboundTls.allowInsecureLocalhost' | 'network.remoteFetch.allowPrivateHosts';
|
|
338
|
+
export type ConfigKey = 'display.stream' | 'display.lineNumbers' | 'display.collapseThreshold' | 'display.theme' | 'display.showThinking' | 'display.showReasoningSummary' | 'display.showTokenSpeed' | 'display.showToolPreview' | 'provider.reasoningEffort' | 'provider.model' | 'provider.provider' | 'provider.embeddingProvider' | 'provider.systemPromptFile' | 'behavior.autoApprove' | 'behavior.autoCompactThreshold' | 'behavior.staleContextWarnings' | 'behavior.saveHistory' | 'behavior.notifyOnComplete' | 'behavior.suggestAlternativeOnProviderFail' | 'behavior.hitlMode' | 'behavior.returnContextMode' | 'behavior.guidanceMode' | 'storage.secretPolicy' | 'permissions.mode' | 'permissions.tools.read' | 'permissions.tools.write' | 'permissions.tools.edit' | 'permissions.tools.exec' | 'permissions.tools.find' | 'permissions.tools.fetch' | 'permissions.tools.analyze' | 'permissions.tools.inspect' | 'permissions.tools.agent' | 'permissions.tools.state' | 'permissions.tools.workflow' | 'permissions.tools.registry' | 'permissions.tools.delegate' | 'permissions.tools.mcp' | 'orchestration.recursionEnabled' | 'orchestration.maxActiveAgents' | 'orchestration.maxDepth' | 'sandbox.replIsolation' | 'sandbox.mcpIsolation' | 'sandbox.windowsMode' | 'sandbox.vmBackend' | 'sandbox.qemuBinary' | 'sandbox.qemuImagePath' | 'sandbox.qemuExecWrapper' | 'sandbox.qemuGuestHost' | 'sandbox.qemuGuestPort' | 'sandbox.qemuGuestUser' | 'sandbox.qemuWorkspacePath' | 'sandbox.qemuSessionMode' | 'ui.voiceEnabled' | 'ui.systemMessages' | 'ui.operationalMessages' | 'ui.wrfcMessages' | 'release.channel' | 'danger.daemon' | 'danger.httpListener' | 'tools.llmEnabled' | 'tools.llmProvider' | 'tools.llmModel' | 'tools.autoHeal' | 'tools.defaultTokenBudget' | 'tools.hooksFile' | 'wrfc.scoreThreshold' | 'wrfc.maxFixAttempts' | 'wrfc.autoCommit' | 'cache.enabled' | 'cache.stableTtl' | 'cache.monitorHitRate' | 'cache.hitRateWarningThreshold' | 'helper.enabled' | 'helper.globalProvider' | 'helper.globalModel' | 'automation.enabled' | 'automation.maxConcurrentRuns' | 'automation.runHistoryLimit' | 'automation.defaultTimeoutMs' | 'automation.catchUpWindowMinutes' | 'automation.failureCooldownMs' | 'automation.deleteAfterRun' | 'controlPlane.enabled' | 'controlPlane.host' | 'controlPlane.port' | 'controlPlane.baseUrl' | 'controlPlane.streamMode' | 'controlPlane.allowRemote' | 'controlPlane.trustProxy' | 'controlPlane.tls.mode' | 'controlPlane.tls.certFile' | 'controlPlane.tls.keyFile' | 'httpListener.host' | 'httpListener.port' | 'httpListener.trustProxy' | 'httpListener.tls.mode' | 'httpListener.tls.certFile' | 'httpListener.tls.keyFile' | 'web.enabled' | 'web.host' | 'web.port' | 'web.publicBaseUrl' | 'web.staticAssetsDir' | 'surfaces.slack.enabled' | 'surfaces.slack.signingSecret' | 'surfaces.slack.botToken' | 'surfaces.slack.appToken' | 'surfaces.slack.defaultChannel' | 'surfaces.slack.workspaceId' | 'surfaces.discord.enabled' | 'surfaces.discord.publicKey' | 'surfaces.discord.botToken' | 'surfaces.discord.applicationId' | 'surfaces.discord.defaultChannelId' | 'surfaces.discord.guildId' | 'surfaces.ntfy.enabled' | 'surfaces.ntfy.baseUrl' | 'surfaces.ntfy.topic' | 'surfaces.ntfy.token' | 'surfaces.ntfy.defaultPriority' | 'surfaces.webhook.enabled' | 'surfaces.webhook.defaultTarget' | 'surfaces.webhook.timeoutMs' | 'surfaces.webhook.secret' | 'surfaces.telegram.enabled' | 'surfaces.telegram.botToken' | 'surfaces.telegram.webhookSecret' | 'surfaces.telegram.defaultChatId' | 'surfaces.telegram.botUsername' | 'surfaces.telegram.mode' | 'surfaces.googleChat.enabled' | 'surfaces.googleChat.webhookUrl' | 'surfaces.googleChat.verificationToken' | 'surfaces.googleChat.appId' | 'surfaces.googleChat.spaceId' | 'surfaces.signal.enabled' | 'surfaces.signal.bridgeUrl' | 'surfaces.signal.account' | 'surfaces.signal.token' | 'surfaces.signal.defaultRecipient' | 'surfaces.whatsapp.enabled' | 'surfaces.whatsapp.provider' | 'surfaces.whatsapp.accessToken' | 'surfaces.whatsapp.verifyToken' | 'surfaces.whatsapp.signingSecret' | 'surfaces.whatsapp.phoneNumberId' | 'surfaces.whatsapp.businessAccountId' | 'surfaces.whatsapp.defaultRecipient' | 'surfaces.imessage.enabled' | 'surfaces.imessage.bridgeUrl' | 'surfaces.imessage.account' | 'surfaces.imessage.token' | 'surfaces.imessage.defaultChatId' | 'surfaces.msteams.enabled' | 'surfaces.msteams.appId' | 'surfaces.msteams.appPassword' | 'surfaces.msteams.tenantId' | 'surfaces.msteams.serviceUrl' | 'surfaces.msteams.botId' | 'surfaces.msteams.defaultConversationId' | 'surfaces.msteams.defaultChannelId' | 'surfaces.bluebubbles.enabled' | 'surfaces.bluebubbles.serverUrl' | 'surfaces.bluebubbles.password' | 'surfaces.bluebubbles.account' | 'surfaces.bluebubbles.defaultChatGuid' | 'surfaces.mattermost.enabled' | 'surfaces.mattermost.baseUrl' | 'surfaces.mattermost.botToken' | 'surfaces.mattermost.teamId' | 'surfaces.mattermost.defaultChannelId' | 'surfaces.matrix.enabled' | 'surfaces.matrix.homeserverUrl' | 'surfaces.matrix.accessToken' | 'surfaces.matrix.userId' | 'surfaces.matrix.defaultRoomId' | 'watchers.enabled' | 'watchers.pollIntervalMs' | 'watchers.heartbeatIntervalMs' | 'watchers.recoveryWindowMinutes' | 'service.enabled' | 'service.autostart' | 'service.restartOnFailure' | 'service.platform' | 'service.serviceName' | 'service.logPath' | 'network.outboundTls.mode' | 'network.outboundTls.customCaFile' | 'network.outboundTls.customCaDir' | 'network.outboundTls.allowInsecureLocalhost' | 'network.remoteFetch.allowPrivateHosts';
|
|
338
339
|
/** Maps a ConfigKey to its value type. */
|
|
339
|
-
export type ConfigValue<K extends ConfigKey> = K extends 'display.stream' ? boolean : K extends 'display.lineNumbers' ? LineNumberMode : K extends 'display.collapseThreshold' ? number : K extends 'display.theme' ? string : K extends 'display.showThinking' ? boolean : K extends 'display.showReasoningSummary' ? boolean : K extends 'display.showTokenSpeed' ? boolean : K extends 'display.showToolPreview' ? boolean : K extends 'provider.reasoningEffort' ? 'instant' | 'low' | 'medium' | 'high' : K extends 'provider.model' ? string : K extends 'provider.provider' ? string : K extends 'provider.embeddingProvider' ? string : K extends 'provider.systemPromptFile' ? string : K extends 'behavior.autoApprove' ? boolean : K extends 'behavior.autoCompactThreshold' ? number : K extends 'behavior.staleContextWarnings' ? boolean : K extends 'behavior.saveHistory' ? boolean : K extends 'behavior.notifyOnComplete' ? boolean : K extends 'behavior.suggestAlternativeOnProviderFail' ? boolean : K extends 'behavior.hitlMode' ? 'quiet' | 'balanced' | 'operator' : K extends 'behavior.returnContextMode' ? 'off' | 'local' | 'assisted' : K extends 'behavior.guidanceMode' ? 'off' | 'minimal' | 'guided' : K extends 'storage.secretPolicy' ? 'plaintext_allowed' | 'preferred_secure' | 'require_secure' : K extends 'permissions.mode' ? PermissionMode : K extends 'permissions.tools.read' ? PermissionAction : K extends 'permissions.tools.write' ? PermissionAction : K extends 'permissions.tools.edit' ? PermissionAction : K extends 'permissions.tools.exec' ? PermissionAction : K extends 'permissions.tools.find' ? PermissionAction : K extends 'permissions.tools.fetch' ? PermissionAction : K extends 'permissions.tools.analyze' ? PermissionAction : K extends 'permissions.tools.inspect' ? PermissionAction : K extends 'permissions.tools.agent' ? PermissionAction : K extends 'permissions.tools.state' ? PermissionAction : K extends 'permissions.tools.workflow' ? PermissionAction : K extends 'permissions.tools.registry' ? PermissionAction : K extends 'permissions.tools.delegate' ? PermissionAction : K extends 'permissions.tools.mcp' ? PermissionAction : K extends 'orchestration.recursionEnabled' ? boolean : K extends 'orchestration.maxActiveAgents' ? number : K extends 'orchestration.maxDepth' ? number : K extends 'sandbox.replIsolation' ? 'shared-vm' | 'per-runtime-vm' : K extends 'sandbox.mcpIsolation' ? 'disabled' | 'shared-vm' | 'hybrid' | 'per-server-vm' : K extends 'sandbox.windowsMode' ? 'native-basic' | 'require-wsl' : K extends 'sandbox.vmBackend' ? 'local' | 'qemu' : K extends 'sandbox.qemuBinary' ? string : K extends 'sandbox.qemuImagePath' ? string : K extends 'sandbox.qemuExecWrapper' ? string : K extends 'sandbox.qemuGuestHost' ? string : K extends 'sandbox.qemuGuestPort' ? number : K extends 'sandbox.qemuGuestUser' ? string : K extends 'sandbox.qemuWorkspacePath' ? string : K extends 'sandbox.qemuSessionMode' ? 'attach' | 'launch-per-command' : K extends 'ui.voiceEnabled' ? boolean : K extends 'ui.systemMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.operationalMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.wrfcMessages' ? 'panel' | 'conversation' | 'both' : K extends 'release.channel' ? 'stable' | 'preview' : K extends 'danger.daemon' ? boolean : K extends 'danger.httpListener' ? boolean : K extends 'tools.llmProvider' ? string : K extends 'tools.llmModel' ? string : K extends 'tools.autoHeal' ? boolean : K extends 'tools.defaultTokenBudget' ? number : K extends 'tools.hooksFile' ? string : K extends 'wrfc.scoreThreshold' ? number : K extends 'wrfc.maxFixAttempts' ? number : K extends 'wrfc.autoCommit' ? boolean : K extends 'cache.enabled' ? boolean : K extends 'cache.stableTtl' ? '5m' | '1h' : K extends 'cache.monitorHitRate' ? boolean : K extends 'cache.hitRateWarningThreshold' ? number : K extends 'helper.enabled' ? boolean : K extends 'helper.globalProvider' ? string : K extends 'helper.globalModel' ? string : K extends 'automation.enabled' ? boolean : K extends 'automation.maxConcurrentRuns' ? number : K extends 'automation.runHistoryLimit' ? number : K extends 'automation.defaultTimeoutMs' ? number : K extends 'automation.catchUpWindowMinutes' ? number : K extends 'automation.failureCooldownMs' ? number : K extends 'automation.deleteAfterRun' ? boolean : K extends 'controlPlane.enabled' ? boolean : K extends 'controlPlane.host' ? string : K extends 'controlPlane.port' ? number : K extends 'controlPlane.baseUrl' ? string : K extends 'controlPlane.streamMode' ? 'sse' | 'websocket' | 'both' : K extends 'controlPlane.allowRemote' ? boolean : K extends 'controlPlane.trustProxy' ? boolean : K extends 'controlPlane.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'controlPlane.tls.certFile' ? string : K extends 'controlPlane.tls.keyFile' ? string : K extends 'httpListener.host' ? string : K extends 'httpListener.port' ? number : K extends 'httpListener.trustProxy' ? boolean : K extends 'httpListener.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'httpListener.tls.certFile' ? string : K extends 'httpListener.tls.keyFile' ? string : K extends 'web.enabled' ? boolean : K extends 'web.host' ? string : K extends 'web.port' ? number : K extends 'web.publicBaseUrl' ? string : K extends 'web.staticAssetsDir' ? string : K extends 'surfaces.slack.enabled' ? boolean : K extends 'surfaces.slack.signingSecret' ? string : K extends 'surfaces.slack.botToken' ? string : K extends 'surfaces.slack.appToken' ? string : K extends 'surfaces.slack.defaultChannel' ? string : K extends 'surfaces.slack.workspaceId' ? string : K extends 'surfaces.discord.enabled' ? boolean : K extends 'surfaces.discord.publicKey' ? string : K extends 'surfaces.discord.botToken' ? string : K extends 'surfaces.discord.applicationId' ? string : K extends 'surfaces.discord.defaultChannelId' ? string : K extends 'surfaces.discord.guildId' ? string : K extends 'surfaces.ntfy.enabled' ? boolean : K extends 'surfaces.ntfy.baseUrl' ? string : K extends 'surfaces.ntfy.topic' ? string : K extends 'surfaces.ntfy.token' ? string : K extends 'surfaces.ntfy.defaultPriority' ? number : K extends 'surfaces.webhook.enabled' ? boolean : K extends 'surfaces.webhook.defaultTarget' ? string : K extends 'surfaces.webhook.timeoutMs' ? number : K extends 'surfaces.webhook.secret' ? string : K extends 'surfaces.telegram.enabled' ? boolean : K extends 'surfaces.telegram.botToken' ? string : K extends 'surfaces.telegram.webhookSecret' ? string : K extends 'surfaces.telegram.defaultChatId' ? string : K extends 'surfaces.telegram.botUsername' ? string : K extends 'surfaces.telegram.mode' ? 'webhook' | 'polling' : K extends 'surfaces.googleChat.enabled' ? boolean : K extends 'surfaces.googleChat.webhookUrl' ? string : K extends 'surfaces.googleChat.verificationToken' ? string : K extends 'surfaces.googleChat.appId' ? string : K extends 'surfaces.googleChat.spaceId' ? string : K extends 'surfaces.signal.enabled' ? boolean : K extends 'surfaces.signal.bridgeUrl' ? string : K extends 'surfaces.signal.account' ? string : K extends 'surfaces.signal.token' ? string : K extends 'surfaces.signal.defaultRecipient' ? string : K extends 'surfaces.whatsapp.enabled' ? boolean : K extends 'surfaces.whatsapp.provider' ? 'meta-cloud' | 'bridge' : K extends 'surfaces.whatsapp.accessToken' ? string : K extends 'surfaces.whatsapp.verifyToken' ? string : K extends 'surfaces.whatsapp.signingSecret' ? string : K extends 'surfaces.whatsapp.phoneNumberId' ? string : K extends 'surfaces.whatsapp.businessAccountId' ? string : K extends 'surfaces.whatsapp.defaultRecipient' ? string : K extends 'surfaces.imessage.enabled' ? boolean : K extends 'surfaces.imessage.bridgeUrl' ? string : K extends 'surfaces.imessage.account' ? string : K extends 'surfaces.imessage.token' ? string : K extends 'surfaces.imessage.defaultChatId' ? string : K extends 'surfaces.msteams.enabled' ? boolean : K extends 'surfaces.msteams.appId' ? string : K extends 'surfaces.msteams.appPassword' ? string : K extends 'surfaces.msteams.tenantId' ? string : K extends 'surfaces.msteams.serviceUrl' ? string : K extends 'surfaces.msteams.botId' ? string : K extends 'surfaces.msteams.defaultConversationId' ? string : K extends 'surfaces.msteams.defaultChannelId' ? string : K extends 'surfaces.bluebubbles.enabled' ? boolean : K extends 'surfaces.bluebubbles.serverUrl' ? string : K extends 'surfaces.bluebubbles.password' ? string : K extends 'surfaces.bluebubbles.account' ? string : K extends 'surfaces.bluebubbles.defaultChatGuid' ? string : K extends 'surfaces.mattermost.enabled' ? boolean : K extends 'surfaces.mattermost.baseUrl' ? string : K extends 'surfaces.mattermost.botToken' ? string : K extends 'surfaces.mattermost.teamId' ? string : K extends 'surfaces.mattermost.defaultChannelId' ? string : K extends 'surfaces.matrix.enabled' ? boolean : K extends 'surfaces.matrix.homeserverUrl' ? string : K extends 'surfaces.matrix.accessToken' ? string : K extends 'surfaces.matrix.userId' ? string : K extends 'surfaces.matrix.defaultRoomId' ? string : K extends 'watchers.enabled' ? boolean : K extends 'watchers.pollIntervalMs' ? number : K extends 'watchers.heartbeatIntervalMs' ? number : K extends 'watchers.recoveryWindowMinutes' ? number : K extends 'service.enabled' ? boolean : K extends 'service.autostart' ? boolean : K extends 'service.restartOnFailure' ? boolean : K extends 'service.platform' ? 'auto' | 'systemd' | 'launchd' | 'windows' | 'manual' : K extends 'service.serviceName' ? string : K extends 'service.logPath' ? string : K extends 'network.outboundTls.mode' ? 'bundled' | 'bundled+custom' | 'custom' : K extends 'network.outboundTls.customCaFile' ? string : K extends 'network.outboundTls.customCaDir' ? string : K extends 'network.outboundTls.allowInsecureLocalhost' ? boolean : K extends 'network.remoteFetch.allowPrivateHosts' ? boolean : never;
|
|
340
|
+
export type ConfigValue<K extends ConfigKey> = K extends 'display.stream' ? boolean : K extends 'display.lineNumbers' ? LineNumberMode : K extends 'display.collapseThreshold' ? number : K extends 'display.theme' ? string : K extends 'display.showThinking' ? boolean : K extends 'display.showReasoningSummary' ? boolean : K extends 'display.showTokenSpeed' ? boolean : K extends 'display.showToolPreview' ? boolean : K extends 'provider.reasoningEffort' ? 'instant' | 'low' | 'medium' | 'high' : K extends 'provider.model' ? string : K extends 'provider.provider' ? string : K extends 'provider.embeddingProvider' ? string : K extends 'provider.systemPromptFile' ? string : K extends 'behavior.autoApprove' ? boolean : K extends 'behavior.autoCompactThreshold' ? number : K extends 'behavior.staleContextWarnings' ? boolean : K extends 'behavior.saveHistory' ? boolean : K extends 'behavior.notifyOnComplete' ? boolean : K extends 'behavior.suggestAlternativeOnProviderFail' ? boolean : K extends 'behavior.hitlMode' ? 'quiet' | 'balanced' | 'operator' : K extends 'behavior.returnContextMode' ? 'off' | 'local' | 'assisted' : K extends 'behavior.guidanceMode' ? 'off' | 'minimal' | 'guided' : K extends 'storage.secretPolicy' ? 'plaintext_allowed' | 'preferred_secure' | 'require_secure' : K extends 'permissions.mode' ? PermissionMode : K extends 'permissions.tools.read' ? PermissionAction : K extends 'permissions.tools.write' ? PermissionAction : K extends 'permissions.tools.edit' ? PermissionAction : K extends 'permissions.tools.exec' ? PermissionAction : K extends 'permissions.tools.find' ? PermissionAction : K extends 'permissions.tools.fetch' ? PermissionAction : K extends 'permissions.tools.analyze' ? PermissionAction : K extends 'permissions.tools.inspect' ? PermissionAction : K extends 'permissions.tools.agent' ? PermissionAction : K extends 'permissions.tools.state' ? PermissionAction : K extends 'permissions.tools.workflow' ? PermissionAction : K extends 'permissions.tools.registry' ? PermissionAction : K extends 'permissions.tools.delegate' ? PermissionAction : K extends 'permissions.tools.mcp' ? PermissionAction : K extends 'orchestration.recursionEnabled' ? boolean : K extends 'orchestration.maxActiveAgents' ? number : K extends 'orchestration.maxDepth' ? number : K extends 'sandbox.replIsolation' ? 'shared-vm' | 'per-runtime-vm' : K extends 'sandbox.mcpIsolation' ? 'disabled' | 'shared-vm' | 'hybrid' | 'per-server-vm' : K extends 'sandbox.windowsMode' ? 'native-basic' | 'require-wsl' : K extends 'sandbox.vmBackend' ? 'local' | 'qemu' : K extends 'sandbox.qemuBinary' ? string : K extends 'sandbox.qemuImagePath' ? string : K extends 'sandbox.qemuExecWrapper' ? string : K extends 'sandbox.qemuGuestHost' ? string : K extends 'sandbox.qemuGuestPort' ? number : K extends 'sandbox.qemuGuestUser' ? string : K extends 'sandbox.qemuWorkspacePath' ? string : K extends 'sandbox.qemuSessionMode' ? 'attach' | 'launch-per-command' : K extends 'ui.voiceEnabled' ? boolean : K extends 'ui.systemMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.operationalMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.wrfcMessages' ? 'panel' | 'conversation' | 'both' : K extends 'release.channel' ? 'stable' | 'preview' : K extends 'danger.daemon' ? boolean : K extends 'danger.httpListener' ? boolean : K extends 'tools.llmEnabled' ? boolean : K extends 'tools.llmProvider' ? string : K extends 'tools.llmModel' ? string : K extends 'tools.autoHeal' ? boolean : K extends 'tools.defaultTokenBudget' ? number : K extends 'tools.hooksFile' ? string : K extends 'wrfc.scoreThreshold' ? number : K extends 'wrfc.maxFixAttempts' ? number : K extends 'wrfc.autoCommit' ? boolean : K extends 'cache.enabled' ? boolean : K extends 'cache.stableTtl' ? '5m' | '1h' : K extends 'cache.monitorHitRate' ? boolean : K extends 'cache.hitRateWarningThreshold' ? number : K extends 'helper.enabled' ? boolean : K extends 'helper.globalProvider' ? string : K extends 'helper.globalModel' ? string : K extends 'automation.enabled' ? boolean : K extends 'automation.maxConcurrentRuns' ? number : K extends 'automation.runHistoryLimit' ? number : K extends 'automation.defaultTimeoutMs' ? number : K extends 'automation.catchUpWindowMinutes' ? number : K extends 'automation.failureCooldownMs' ? number : K extends 'automation.deleteAfterRun' ? boolean : K extends 'controlPlane.enabled' ? boolean : K extends 'controlPlane.host' ? string : K extends 'controlPlane.port' ? number : K extends 'controlPlane.baseUrl' ? string : K extends 'controlPlane.streamMode' ? 'sse' | 'websocket' | 'both' : K extends 'controlPlane.allowRemote' ? boolean : K extends 'controlPlane.trustProxy' ? boolean : K extends 'controlPlane.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'controlPlane.tls.certFile' ? string : K extends 'controlPlane.tls.keyFile' ? string : K extends 'httpListener.host' ? string : K extends 'httpListener.port' ? number : K extends 'httpListener.trustProxy' ? boolean : K extends 'httpListener.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'httpListener.tls.certFile' ? string : K extends 'httpListener.tls.keyFile' ? string : K extends 'web.enabled' ? boolean : K extends 'web.host' ? string : K extends 'web.port' ? number : K extends 'web.publicBaseUrl' ? string : K extends 'web.staticAssetsDir' ? string : K extends 'surfaces.slack.enabled' ? boolean : K extends 'surfaces.slack.signingSecret' ? string : K extends 'surfaces.slack.botToken' ? string : K extends 'surfaces.slack.appToken' ? string : K extends 'surfaces.slack.defaultChannel' ? string : K extends 'surfaces.slack.workspaceId' ? string : K extends 'surfaces.discord.enabled' ? boolean : K extends 'surfaces.discord.publicKey' ? string : K extends 'surfaces.discord.botToken' ? string : K extends 'surfaces.discord.applicationId' ? string : K extends 'surfaces.discord.defaultChannelId' ? string : K extends 'surfaces.discord.guildId' ? string : K extends 'surfaces.ntfy.enabled' ? boolean : K extends 'surfaces.ntfy.baseUrl' ? string : K extends 'surfaces.ntfy.topic' ? string : K extends 'surfaces.ntfy.token' ? string : K extends 'surfaces.ntfy.defaultPriority' ? number : K extends 'surfaces.webhook.enabled' ? boolean : K extends 'surfaces.webhook.defaultTarget' ? string : K extends 'surfaces.webhook.timeoutMs' ? number : K extends 'surfaces.webhook.secret' ? string : K extends 'surfaces.telegram.enabled' ? boolean : K extends 'surfaces.telegram.botToken' ? string : K extends 'surfaces.telegram.webhookSecret' ? string : K extends 'surfaces.telegram.defaultChatId' ? string : K extends 'surfaces.telegram.botUsername' ? string : K extends 'surfaces.telegram.mode' ? 'webhook' | 'polling' : K extends 'surfaces.googleChat.enabled' ? boolean : K extends 'surfaces.googleChat.webhookUrl' ? string : K extends 'surfaces.googleChat.verificationToken' ? string : K extends 'surfaces.googleChat.appId' ? string : K extends 'surfaces.googleChat.spaceId' ? string : K extends 'surfaces.signal.enabled' ? boolean : K extends 'surfaces.signal.bridgeUrl' ? string : K extends 'surfaces.signal.account' ? string : K extends 'surfaces.signal.token' ? string : K extends 'surfaces.signal.defaultRecipient' ? string : K extends 'surfaces.whatsapp.enabled' ? boolean : K extends 'surfaces.whatsapp.provider' ? 'meta-cloud' | 'bridge' : K extends 'surfaces.whatsapp.accessToken' ? string : K extends 'surfaces.whatsapp.verifyToken' ? string : K extends 'surfaces.whatsapp.signingSecret' ? string : K extends 'surfaces.whatsapp.phoneNumberId' ? string : K extends 'surfaces.whatsapp.businessAccountId' ? string : K extends 'surfaces.whatsapp.defaultRecipient' ? string : K extends 'surfaces.imessage.enabled' ? boolean : K extends 'surfaces.imessage.bridgeUrl' ? string : K extends 'surfaces.imessage.account' ? string : K extends 'surfaces.imessage.token' ? string : K extends 'surfaces.imessage.defaultChatId' ? string : K extends 'surfaces.msteams.enabled' ? boolean : K extends 'surfaces.msteams.appId' ? string : K extends 'surfaces.msteams.appPassword' ? string : K extends 'surfaces.msteams.tenantId' ? string : K extends 'surfaces.msteams.serviceUrl' ? string : K extends 'surfaces.msteams.botId' ? string : K extends 'surfaces.msteams.defaultConversationId' ? string : K extends 'surfaces.msteams.defaultChannelId' ? string : K extends 'surfaces.bluebubbles.enabled' ? boolean : K extends 'surfaces.bluebubbles.serverUrl' ? string : K extends 'surfaces.bluebubbles.password' ? string : K extends 'surfaces.bluebubbles.account' ? string : K extends 'surfaces.bluebubbles.defaultChatGuid' ? string : K extends 'surfaces.mattermost.enabled' ? boolean : K extends 'surfaces.mattermost.baseUrl' ? string : K extends 'surfaces.mattermost.botToken' ? string : K extends 'surfaces.mattermost.teamId' ? string : K extends 'surfaces.mattermost.defaultChannelId' ? string : K extends 'surfaces.matrix.enabled' ? boolean : K extends 'surfaces.matrix.homeserverUrl' ? string : K extends 'surfaces.matrix.accessToken' ? string : K extends 'surfaces.matrix.userId' ? string : K extends 'surfaces.matrix.defaultRoomId' ? string : K extends 'watchers.enabled' ? boolean : K extends 'watchers.pollIntervalMs' ? number : K extends 'watchers.heartbeatIntervalMs' ? number : K extends 'watchers.recoveryWindowMinutes' ? number : K extends 'service.enabled' ? boolean : K extends 'service.autostart' ? boolean : K extends 'service.restartOnFailure' ? boolean : K extends 'service.platform' ? 'auto' | 'systemd' | 'launchd' | 'windows' | 'manual' : K extends 'service.serviceName' ? string : K extends 'service.logPath' ? string : K extends 'network.outboundTls.mode' ? 'bundled' | 'bundled+custom' | 'custom' : K extends 'network.outboundTls.customCaFile' ? string : K extends 'network.outboundTls.customCaDir' ? string : K extends 'network.outboundTls.allowInsecureLocalhost' ? boolean : K extends 'network.remoteFetch.allowPrivateHosts' ? boolean : never;
|
|
340
341
|
//# sourceMappingURL=schema-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-llm.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/tool-llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,iBAAiB,GAAG,aAAa,CAAC,CAAC;CAC9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"tool-llm.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/tool-llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,iBAAiB,GAAG,aAAa,CAAC,CAAC;CAC9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAsBxE;AAED,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAE9C;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;CAsB9E"}
|
|
@@ -26,6 +26,9 @@ import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-displ
|
|
|
26
26
|
*/
|
|
27
27
|
export function resolveToolLLM(deps) {
|
|
28
28
|
try {
|
|
29
|
+
const enabled = deps.configManager.get('tools.llmEnabled');
|
|
30
|
+
if (!enabled)
|
|
31
|
+
return null;
|
|
29
32
|
const cfgProvider = deps.configManager.get('tools.llmProvider');
|
|
30
33
|
const cfgModel = deps.configManager.get('tools.llmModel');
|
|
31
34
|
if (cfgProvider && cfgModel) {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface CompanionPairingResult {
|
|
2
|
+
readonly token: string;
|
|
3
|
+
readonly peerId: string;
|
|
4
|
+
readonly createdAt: number;
|
|
5
|
+
}
|
|
6
|
+
export interface CompanionConnectionInfo {
|
|
7
|
+
readonly url: string;
|
|
8
|
+
readonly token: string;
|
|
9
|
+
readonly username: string;
|
|
10
|
+
readonly version: string;
|
|
11
|
+
readonly surface: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CompanionTokenRecord {
|
|
14
|
+
readonly token: string;
|
|
15
|
+
readonly peerId: string;
|
|
16
|
+
readonly createdAt: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Load the stored companion token for a surface, or generate and persist a new one.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getOrCreateCompanionToken(surface: string, options?: {
|
|
22
|
+
basePath?: string;
|
|
23
|
+
regenerate?: boolean;
|
|
24
|
+
}): CompanionPairingResult;
|
|
25
|
+
/**
|
|
26
|
+
* Regenerate the companion token for a surface, replacing any existing token.
|
|
27
|
+
*/
|
|
28
|
+
export declare function regenerateCompanionToken(surface: string, options?: {
|
|
29
|
+
basePath?: string;
|
|
30
|
+
}): CompanionPairingResult;
|
|
31
|
+
/**
|
|
32
|
+
* Build a CompanionConnectionInfo object from raw parameters.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildCompanionConnectionInfo(options: {
|
|
35
|
+
daemonUrl: string;
|
|
36
|
+
token: string;
|
|
37
|
+
username?: string;
|
|
38
|
+
version?: string;
|
|
39
|
+
surface?: string;
|
|
40
|
+
}): CompanionConnectionInfo;
|
|
41
|
+
/**
|
|
42
|
+
* Encode a CompanionConnectionInfo as a JSON string suitable for QR encoding.
|
|
43
|
+
*/
|
|
44
|
+
export declare function encodeConnectionPayload(info: CompanionConnectionInfo): string;
|
|
45
|
+
//# sourceMappingURL=companion-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-token.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/pairing/companion-token.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAqBD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,sBAAsB,CAyBxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,sBAAsB,CAExB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,uBAAuB,CAQ1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAQ7E"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const TOKEN_PREFIX = 'gv_';
|
|
5
|
+
function generateTokenValue() {
|
|
6
|
+
return TOKEN_PREFIX + randomBytes(24).toString('base64url');
|
|
7
|
+
}
|
|
8
|
+
function generatePeerId() {
|
|
9
|
+
return randomBytes(12).toString('hex');
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the path to the companion token file for a given surface.
|
|
13
|
+
* Stored at `.goodvibes/<surface>/companion-token.json` relative to cwd.
|
|
14
|
+
*/
|
|
15
|
+
function resolveTokenPath(surface, basePath) {
|
|
16
|
+
const base = basePath ?? process.cwd();
|
|
17
|
+
return join(base, '.goodvibes', surface, 'companion-token.json');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Load the stored companion token for a surface, or generate and persist a new one.
|
|
21
|
+
*/
|
|
22
|
+
export function getOrCreateCompanionToken(surface, options) {
|
|
23
|
+
const tokenPath = resolveTokenPath(surface, options?.basePath);
|
|
24
|
+
if (!options?.regenerate && existsSync(tokenPath)) {
|
|
25
|
+
try {
|
|
26
|
+
const raw = readFileSync(tokenPath, 'utf-8');
|
|
27
|
+
const record = JSON.parse(raw);
|
|
28
|
+
if (typeof record.token === 'string' && typeof record.peerId === 'string') {
|
|
29
|
+
return { token: record.token, peerId: record.peerId, createdAt: record.createdAt };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Fall through to regenerate
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const record = {
|
|
37
|
+
token: generateTokenValue(),
|
|
38
|
+
peerId: generatePeerId(),
|
|
39
|
+
createdAt: Date.now(),
|
|
40
|
+
};
|
|
41
|
+
mkdirSync(join(resolveTokenPath(surface, options?.basePath), '..'), { recursive: true });
|
|
42
|
+
writeFileSync(tokenPath, JSON.stringify(record, null, 2), 'utf-8');
|
|
43
|
+
return { token: record.token, peerId: record.peerId, createdAt: record.createdAt };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Regenerate the companion token for a surface, replacing any existing token.
|
|
47
|
+
*/
|
|
48
|
+
export function regenerateCompanionToken(surface, options) {
|
|
49
|
+
return getOrCreateCompanionToken(surface, { ...options, regenerate: true });
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Build a CompanionConnectionInfo object from raw parameters.
|
|
53
|
+
*/
|
|
54
|
+
export function buildCompanionConnectionInfo(options) {
|
|
55
|
+
return {
|
|
56
|
+
url: options.daemonUrl,
|
|
57
|
+
token: options.token,
|
|
58
|
+
username: options.username ?? 'admin',
|
|
59
|
+
version: options.version ?? '0.0.0',
|
|
60
|
+
surface: options.surface ?? 'daemon',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Encode a CompanionConnectionInfo as a JSON string suitable for QR encoding.
|
|
65
|
+
*/
|
|
66
|
+
export function encodeConnectionPayload(info) {
|
|
67
|
+
return JSON.stringify({
|
|
68
|
+
url: info.url,
|
|
69
|
+
token: info.token,
|
|
70
|
+
username: info.username,
|
|
71
|
+
version: info.version,
|
|
72
|
+
surface: info.surface,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CompanionConnectionInfo } from './companion-token.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format a human-readable connection block for stdout display in daemon standalone mode.
|
|
4
|
+
*
|
|
5
|
+
* @param info - The companion connection info.
|
|
6
|
+
* @param qrString - The rendered QR code string (from renderQrToString).
|
|
7
|
+
* @returns Formatted multi-line string ready for stdout.
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatConnectionBlock(info: CompanionConnectionInfo, qrString: string): string;
|
|
10
|
+
//# sourceMappingURL=connection-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-info.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/pairing/connection-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAIpE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,EAAE,MAAM,GACf,MAAM,CAmBR"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const DIVIDER = '\u2501'.repeat(24); // ━━━━━━━━━━━━━━━━━━━━━━━━
|
|
2
|
+
/**
|
|
3
|
+
* Format a human-readable connection block for stdout display in daemon standalone mode.
|
|
4
|
+
*
|
|
5
|
+
* @param info - The companion connection info.
|
|
6
|
+
* @param qrString - The rendered QR code string (from renderQrToString).
|
|
7
|
+
* @returns Formatted multi-line string ready for stdout.
|
|
8
|
+
*/
|
|
9
|
+
export function formatConnectionBlock(info, qrString) {
|
|
10
|
+
const header = `goodvibes daemon v${info.version}`;
|
|
11
|
+
const urlLine = `URL: ${info.url}`;
|
|
12
|
+
const tokenLine = `Token: ${info.token}`;
|
|
13
|
+
const userLine = `User: ${info.username}`;
|
|
14
|
+
return [
|
|
15
|
+
header,
|
|
16
|
+
DIVIDER,
|
|
17
|
+
urlLine,
|
|
18
|
+
tokenLine,
|
|
19
|
+
userLine,
|
|
20
|
+
'',
|
|
21
|
+
'Scan to connect:',
|
|
22
|
+
'',
|
|
23
|
+
qrString,
|
|
24
|
+
'',
|
|
25
|
+
'Waiting for connections...',
|
|
26
|
+
].join('\n');
|
|
27
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { QrMatrix, } from './qr-generator.js';
|
|
2
|
+
export { generateQrMatrix, renderQrToString, } from './qr-generator.js';
|
|
3
|
+
export type { CompanionPairingResult, CompanionConnectionInfo, CompanionTokenRecord, } from './companion-token.js';
|
|
4
|
+
export { getOrCreateCompanionToken, regenerateCompanionToken, buildCompanionConnectionInfo, encodeConnectionPayload, } from './companion-token.js';
|
|
5
|
+
export { formatConnectionBlock } from './connection-info.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/pairing/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { generateQrMatrix, renderQrToString, } from './qr-generator.js';
|
|
2
|
+
export { getOrCreateCompanionToken, regenerateCompanionToken, buildCompanionConnectionInfo, encodeConnectionPayload, } from './companion-token.js';
|
|
3
|
+
export { formatConnectionBlock } from './connection-info.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface QrMatrix {
|
|
2
|
+
readonly size: number;
|
|
3
|
+
readonly modules: readonly boolean[][];
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Generate a QR code matrix for the given data string.
|
|
7
|
+
* Tries qrencode CLI first; falls back to minimal built-in implementation.
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateQrMatrix(data: string): QrMatrix;
|
|
10
|
+
/**
|
|
11
|
+
* Render a QR matrix to a Unicode block string suitable for terminal output.
|
|
12
|
+
* Uses half-block characters to pack 2 rows into 1 terminal row.
|
|
13
|
+
*
|
|
14
|
+
* - Full block `█` = dark top + dark bottom
|
|
15
|
+
* - Upper half `▀` = dark top + light bottom
|
|
16
|
+
* - Lower half `▄` = light top + dark bottom
|
|
17
|
+
* - Space ` ` = light top + light bottom
|
|
18
|
+
*/
|
|
19
|
+
export declare function renderQrToString(matrix: QrMatrix): string;
|
|
20
|
+
//# sourceMappingURL=qr-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr-generator.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/pairing/qr-generator.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC;CACxC;AAibD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAIvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAgBzD"}
|
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Attempt to generate a QR matrix by shelling out to `qrencode`.
|
|
4
|
+
* Returns null if qrencode is not available or fails.
|
|
5
|
+
*/
|
|
6
|
+
function tryQrencode(data) {
|
|
7
|
+
try {
|
|
8
|
+
// -t ASC outputs a 2-character-per-module ASCII representation:
|
|
9
|
+
// '##' = dark module, ' ' = light module, with a surrounding quiet zone
|
|
10
|
+
// We use -t UTF8i (inverted) if available, or fall back to -t ASC.
|
|
11
|
+
// qrencode -t ASC outputs lines like: '###### ## ######'
|
|
12
|
+
// where each character is one module.
|
|
13
|
+
// We request -m 0 (no margin) and -s 1 for raw matrix output.
|
|
14
|
+
const output = execSync(`qrencode -m 0 -t ASC ${JSON.stringify(data)}`, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000 });
|
|
15
|
+
const rawLines = output.split('\n').filter((l) => l.length > 0);
|
|
16
|
+
if (rawLines.length === 0)
|
|
17
|
+
return null;
|
|
18
|
+
// qrencode ASC mode: each module is 2 characters wide ('##' dark, ' ' light)
|
|
19
|
+
const modules = rawLines.map((line) => {
|
|
20
|
+
const row = [];
|
|
21
|
+
for (let i = 0; i < line.length; i += 2) {
|
|
22
|
+
const pair = line.slice(i, i + 2);
|
|
23
|
+
row.push(pair === '##');
|
|
24
|
+
}
|
|
25
|
+
return row;
|
|
26
|
+
});
|
|
27
|
+
const size = modules[0]?.length ?? 0;
|
|
28
|
+
// Normalize all rows to the same size
|
|
29
|
+
const normalized = modules.map((row) => {
|
|
30
|
+
while (row.length < size)
|
|
31
|
+
row.push(false);
|
|
32
|
+
return row.slice(0, size);
|
|
33
|
+
});
|
|
34
|
+
return { size, modules: normalized };
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Minimal fallback QR matrix generator using a tiny Reed-Solomon QR implementation.
|
|
42
|
+
* Supports QR versions 1-9 (up to ~134 bytes, ECC level M).
|
|
43
|
+
*
|
|
44
|
+
* This is a self-contained implementation suitable for short connection strings.
|
|
45
|
+
*/
|
|
46
|
+
function generateQrMatrixMinimal(data) {
|
|
47
|
+
const bytes = new TextEncoder().encode(data);
|
|
48
|
+
const len = bytes.length;
|
|
49
|
+
// Version selection table: [version, dataCapacityBytes at ECC-M]
|
|
50
|
+
// Source: QR code spec Table 9
|
|
51
|
+
const versionTable = [
|
|
52
|
+
[1, 16], [2, 28], [3, 44], [4, 64], [5, 86],
|
|
53
|
+
[6, 108], [7, 124], [8, 154], [9, 182], [10, 216],
|
|
54
|
+
];
|
|
55
|
+
let version = 0;
|
|
56
|
+
for (const [v, cap] of versionTable) {
|
|
57
|
+
if (len <= cap) {
|
|
58
|
+
version = v;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (version === 0) {
|
|
63
|
+
throw new Error(`Data too long for minimal QR generator (${len} bytes, max 216)`);
|
|
64
|
+
}
|
|
65
|
+
// Total codewords and ECC codewords per block (ECC level M)
|
|
66
|
+
// [version]: [totalCodewords, eccCodewords, blocks]
|
|
67
|
+
const eccTable = {
|
|
68
|
+
1: [26, 10, 1], 2: [44, 16, 1], 3: [70, 26, 2],
|
|
69
|
+
4: [100, 36, 2], 5: [134, 48, 2], 6: [172, 64, 4],
|
|
70
|
+
7: [196, 72, 4], 8: [242, 88, 4], 9: [292, 110, 5],
|
|
71
|
+
10: [346, 130, 5],
|
|
72
|
+
};
|
|
73
|
+
const [totalCodewords, eccPerBlock, numBlocks] = eccTable[version];
|
|
74
|
+
const dataCodewords = totalCodewords - (eccPerBlock * numBlocks);
|
|
75
|
+
// Build data bit stream: mode (byte=0100), char count, data, terminator, padding
|
|
76
|
+
const bits = [];
|
|
77
|
+
function pushBits(value, count) {
|
|
78
|
+
for (let i = count - 1; i >= 0; i--) {
|
|
79
|
+
bits.push((value >> i) & 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Mode indicator: byte mode = 0100
|
|
83
|
+
pushBits(0b0100, 4);
|
|
84
|
+
// Character count indicator (version 1-9: 8 bits for byte mode)
|
|
85
|
+
pushBits(len, 8);
|
|
86
|
+
// Data bytes
|
|
87
|
+
for (const b of bytes)
|
|
88
|
+
pushBits(b, 8);
|
|
89
|
+
// Terminator (up to 4 zero bits)
|
|
90
|
+
const maxBits = dataCodewords * 8;
|
|
91
|
+
for (let i = 0; i < 4 && bits.length < maxBits; i++)
|
|
92
|
+
bits.push(0);
|
|
93
|
+
// Pad to byte boundary
|
|
94
|
+
while (bits.length % 8 !== 0)
|
|
95
|
+
bits.push(0);
|
|
96
|
+
// Pad codewords
|
|
97
|
+
const padBytes = [0xEC, 0x11];
|
|
98
|
+
let padIdx = 0;
|
|
99
|
+
while (bits.length < maxBits) {
|
|
100
|
+
pushBits(padBytes[padIdx % 2], 8);
|
|
101
|
+
padIdx++;
|
|
102
|
+
}
|
|
103
|
+
// Convert bits to bytes
|
|
104
|
+
const dataBytes = [];
|
|
105
|
+
for (let i = 0; i < bits.length; i += 8) {
|
|
106
|
+
let b = 0;
|
|
107
|
+
for (let j = 0; j < 8; j++)
|
|
108
|
+
b = (b << 1) | (bits[i + j] ?? 0);
|
|
109
|
+
dataBytes.push(b);
|
|
110
|
+
}
|
|
111
|
+
// Split into blocks and compute ECC
|
|
112
|
+
const dataPerBlock = Math.floor(dataCodewords / numBlocks);
|
|
113
|
+
const extraBlocks = dataCodewords - dataPerBlock * numBlocks;
|
|
114
|
+
const blocks = [];
|
|
115
|
+
let offset = 0;
|
|
116
|
+
for (let b = 0; b < numBlocks; b++) {
|
|
117
|
+
const blockLen = dataPerBlock + (b < extraBlocks ? 1 : 0);
|
|
118
|
+
blocks.push(dataBytes.slice(offset, offset + blockLen));
|
|
119
|
+
offset += blockLen;
|
|
120
|
+
}
|
|
121
|
+
// Reed-Solomon ECC generation
|
|
122
|
+
function gfMul(a, b) {
|
|
123
|
+
if (a === 0 || b === 0)
|
|
124
|
+
return 0;
|
|
125
|
+
const logTable = buildLogTable();
|
|
126
|
+
const expTable = buildExpTable();
|
|
127
|
+
return expTable[(logTable[a] + logTable[b]) % 255];
|
|
128
|
+
}
|
|
129
|
+
// Lazily built lookup tables (closured)
|
|
130
|
+
let _expTable = null;
|
|
131
|
+
let _logTable = null;
|
|
132
|
+
function buildExpTable() {
|
|
133
|
+
if (_expTable)
|
|
134
|
+
return _expTable;
|
|
135
|
+
_expTable = new Array(256);
|
|
136
|
+
let x = 1;
|
|
137
|
+
for (let i = 0; i < 255; i++) {
|
|
138
|
+
_expTable[i] = x;
|
|
139
|
+
x = (x << 1) ^ (x >= 128 ? 0x11d : 0);
|
|
140
|
+
}
|
|
141
|
+
_expTable[255] = _expTable[0];
|
|
142
|
+
return _expTable;
|
|
143
|
+
}
|
|
144
|
+
function buildLogTable() {
|
|
145
|
+
if (_logTable)
|
|
146
|
+
return _logTable;
|
|
147
|
+
const exp = buildExpTable();
|
|
148
|
+
_logTable = new Array(256).fill(0);
|
|
149
|
+
for (let i = 0; i < 255; i++)
|
|
150
|
+
_logTable[exp[i]] = i;
|
|
151
|
+
return _logTable;
|
|
152
|
+
}
|
|
153
|
+
function rsEcc(data, eccCount) {
|
|
154
|
+
// Generator polynomial for eccCount error correction codewords
|
|
155
|
+
const expTable = buildExpTable();
|
|
156
|
+
const logTable = buildLogTable();
|
|
157
|
+
// Build generator polynomial
|
|
158
|
+
let gen = [1];
|
|
159
|
+
for (let i = 0; i < eccCount; i++) {
|
|
160
|
+
const factor = [1, expTable[i]];
|
|
161
|
+
const newGen = new Array(gen.length + factor.length - 1).fill(0);
|
|
162
|
+
for (let j = 0; j < gen.length; j++) {
|
|
163
|
+
for (let k = 0; k < factor.length; k++) {
|
|
164
|
+
newGen[j + k] ^= gfMul(gen[j], factor[k]);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
gen = newGen;
|
|
168
|
+
}
|
|
169
|
+
// Polynomial long division
|
|
170
|
+
const msg = [...data, ...new Array(eccCount).fill(0)];
|
|
171
|
+
for (let i = 0; i < data.length; i++) {
|
|
172
|
+
const coef = msg[i];
|
|
173
|
+
if (coef !== 0) {
|
|
174
|
+
const log = logTable[coef];
|
|
175
|
+
for (let j = 0; j < gen.length; j++) {
|
|
176
|
+
msg[i + j] ^= gfMul(gen[j], expTable[(log + logTable[gen[j]]) % 255] / gen[j] | 0);
|
|
177
|
+
// Correct formula using logs:
|
|
178
|
+
if (gen[j] !== 0) {
|
|
179
|
+
msg[i + j] ^= expTable[(log + logTable[gen[j]]) % 255];
|
|
180
|
+
// undo the wrong xor above
|
|
181
|
+
msg[i + j] ^= gfMul(gen[j], expTable[(log + logTable[gen[j]]) % 255] / gen[j] | 0);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return msg.slice(data.length);
|
|
187
|
+
}
|
|
188
|
+
// Simpler, correct RS ECC implementation:
|
|
189
|
+
function rsEccCorrect(data, eccCount) {
|
|
190
|
+
const expTable = buildExpTable();
|
|
191
|
+
const logTable = buildLogTable();
|
|
192
|
+
let gen = [1];
|
|
193
|
+
for (let i = 0; i < eccCount; i++) {
|
|
194
|
+
const factor = [1, expTable[i]];
|
|
195
|
+
const newGen = new Array(gen.length + factor.length - 1).fill(0);
|
|
196
|
+
for (let j = 0; j < gen.length; j++) {
|
|
197
|
+
for (let k = 0; k < factor.length; k++) {
|
|
198
|
+
newGen[j + k] ^= gfMul(gen[j], factor[k]);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
gen = newGen;
|
|
202
|
+
}
|
|
203
|
+
const msg = [...data, ...new Array(eccCount).fill(0)];
|
|
204
|
+
for (let i = 0; i < data.length; i++) {
|
|
205
|
+
const coef = msg[i];
|
|
206
|
+
if (coef !== 0) {
|
|
207
|
+
const logCoef = logTable[coef];
|
|
208
|
+
for (let j = 1; j < gen.length; j++) {
|
|
209
|
+
if (gen[j] !== 0) {
|
|
210
|
+
msg[i + j] ^= expTable[(logCoef + logTable[gen[j]]) % 255];
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return msg.slice(data.length);
|
|
216
|
+
}
|
|
217
|
+
// Interleave blocks and compute ECC
|
|
218
|
+
const eccBlocks = blocks.map((b) => rsEccCorrect(b, eccPerBlock));
|
|
219
|
+
const finalBytes = [];
|
|
220
|
+
// Interleave data blocks
|
|
221
|
+
const maxDataLen = Math.max(...blocks.map((b) => b.length));
|
|
222
|
+
for (let i = 0; i < maxDataLen; i++) {
|
|
223
|
+
for (const block of blocks) {
|
|
224
|
+
if (i < block.length)
|
|
225
|
+
finalBytes.push(block[i]);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Interleave ECC blocks
|
|
229
|
+
for (let i = 0; i < eccPerBlock; i++) {
|
|
230
|
+
for (const ecc of eccBlocks) {
|
|
231
|
+
finalBytes.push(ecc[i]);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Build the QR matrix
|
|
235
|
+
const size = 21 + (version - 1) * 4;
|
|
236
|
+
const matrix = Array.from({ length: size }, () => new Array(size).fill(null));
|
|
237
|
+
function setModule(row, col, dark) {
|
|
238
|
+
if (row >= 0 && row < size && col >= 0 && col < size) {
|
|
239
|
+
matrix[row][col] = dark;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Place finder pattern
|
|
243
|
+
function placeFinderPattern(r, c) {
|
|
244
|
+
for (let dy = -1; dy <= 7; dy++) {
|
|
245
|
+
for (let dx = -1; dx <= 7; dx++) {
|
|
246
|
+
const inOuter = dy >= 0 && dy <= 6 && dx >= 0 && dx <= 6;
|
|
247
|
+
const inWhite = dy >= 1 && dy <= 5 && dx >= 1 && dx <= 5;
|
|
248
|
+
const inInner = dy >= 2 && dy <= 4 && dx >= 2 && dx <= 4;
|
|
249
|
+
if (!inOuter) {
|
|
250
|
+
setModule(r + dy, c + dx, false); // separator
|
|
251
|
+
}
|
|
252
|
+
else if (inWhite && !inInner) {
|
|
253
|
+
setModule(r + dy, c + dx, false);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
setModule(r + dy, c + dx, inInner || (dy === 0 || dy === 6 || dx === 0 || dx === 6));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
placeFinderPattern(0, 0);
|
|
262
|
+
placeFinderPattern(0, size - 7);
|
|
263
|
+
placeFinderPattern(size - 7, 0);
|
|
264
|
+
// Timing patterns
|
|
265
|
+
for (let i = 8; i < size - 8; i++) {
|
|
266
|
+
const dark = i % 2 === 0;
|
|
267
|
+
setModule(6, i, dark);
|
|
268
|
+
setModule(i, 6, dark);
|
|
269
|
+
}
|
|
270
|
+
// Alignment patterns (version >= 2)
|
|
271
|
+
const alignmentPositions = {
|
|
272
|
+
2: [6, 18], 3: [6, 22], 4: [6, 26], 5: [6, 30],
|
|
273
|
+
6: [6, 34], 7: [6, 22, 38], 8: [6, 24, 42],
|
|
274
|
+
9: [6, 28, 46], 10: [6, 28, 50],
|
|
275
|
+
};
|
|
276
|
+
const alignPos = version >= 2 ? alignmentPositions[version] ?? [] : [];
|
|
277
|
+
for (const r of alignPos) {
|
|
278
|
+
for (const c of alignPos) {
|
|
279
|
+
// Skip positions occupied by finder patterns
|
|
280
|
+
if ((r <= 8 && c <= 8) || (r <= 8 && c >= size - 8) || (r >= size - 8 && c <= 8))
|
|
281
|
+
continue;
|
|
282
|
+
for (let dy = -2; dy <= 2; dy++) {
|
|
283
|
+
for (let dx = -2; dx <= 2; dx++) {
|
|
284
|
+
const isEdge = Math.abs(dy) === 2 || Math.abs(dx) === 2;
|
|
285
|
+
const isCenter = dy === 0 && dx === 0;
|
|
286
|
+
setModule(r + dy, c + dx, isEdge || isCenter);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Dark module (always dark)
|
|
292
|
+
setModule(4 * version + 9, 8, true);
|
|
293
|
+
// Format information area — reserve (mark as false for now)
|
|
294
|
+
for (let i = 0; i < 9; i++) {
|
|
295
|
+
setModule(8, i, matrix[8]?.[i] ?? false);
|
|
296
|
+
setModule(i, 8, matrix[i]?.[8] ?? false);
|
|
297
|
+
}
|
|
298
|
+
for (let i = size - 8; i < size; i++) {
|
|
299
|
+
setModule(8, i, false);
|
|
300
|
+
setModule(i, 8, false);
|
|
301
|
+
}
|
|
302
|
+
// Place data bits (zigzag pattern)
|
|
303
|
+
const allBits = [];
|
|
304
|
+
for (const b of finalBytes) {
|
|
305
|
+
for (let i = 7; i >= 0; i--)
|
|
306
|
+
allBits.push((b >> i) & 1);
|
|
307
|
+
}
|
|
308
|
+
let bitIdx = 0;
|
|
309
|
+
let goUp = true;
|
|
310
|
+
// Right-to-left column pairs, skipping column 6 (timing)
|
|
311
|
+
for (let col = size - 1; col >= 1; col -= 2) {
|
|
312
|
+
if (col === 6)
|
|
313
|
+
col--; // skip timing column
|
|
314
|
+
const colRange = goUp
|
|
315
|
+
? Array.from({ length: size }, (_, i) => size - 1 - i)
|
|
316
|
+
: Array.from({ length: size }, (_, i) => i);
|
|
317
|
+
for (const row of colRange) {
|
|
318
|
+
for (const dc of [0, -1]) {
|
|
319
|
+
const c = col + dc;
|
|
320
|
+
if (matrix[row]?.[c] === null) {
|
|
321
|
+
const bit = allBits[bitIdx++] ?? 0;
|
|
322
|
+
matrix[row][c] = bit === 1;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
goUp = !goUp;
|
|
327
|
+
}
|
|
328
|
+
// Apply mask pattern 0 (checkerboard: (row + col) % 2 === 0)
|
|
329
|
+
// and place format information
|
|
330
|
+
const maskFn = (r, c) => (r + c) % 2 === 0;
|
|
331
|
+
for (let r = 0; r < size; r++) {
|
|
332
|
+
for (let c = 0; c < size; c++) {
|
|
333
|
+
const module = matrix[r]?.[c];
|
|
334
|
+
if (module === null) {
|
|
335
|
+
matrix[r][c] = false; // unfilled = light
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
// Only apply mask to data modules (not function patterns)
|
|
339
|
+
// We re-apply masking carefully: function patterns are already fixed
|
|
340
|
+
// Data modules that were null are now set above
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// Apply mask to data modules (those placed via zigzag)
|
|
345
|
+
bitIdx = 0;
|
|
346
|
+
goUp = true;
|
|
347
|
+
const maskedMatrix = matrix.map((row) => row.map((m) => m ?? false));
|
|
348
|
+
// Reset data area and re-place with masking
|
|
349
|
+
{
|
|
350
|
+
const tempMatrix = matrix.map((row) => [...row]);
|
|
351
|
+
// Re-mark data positions as null
|
|
352
|
+
let bi = 0;
|
|
353
|
+
let gu = true;
|
|
354
|
+
for (let col = size - 1; col >= 1; col -= 2) {
|
|
355
|
+
if (col === 6)
|
|
356
|
+
col--;
|
|
357
|
+
const colRange = gu
|
|
358
|
+
? Array.from({ length: size }, (_, i) => size - 1 - i)
|
|
359
|
+
: Array.from({ length: size }, (_, i) => i);
|
|
360
|
+
for (const row of colRange) {
|
|
361
|
+
for (const dc of [0, -1]) {
|
|
362
|
+
const c = col + dc;
|
|
363
|
+
if (tempMatrix[row]?.[c] !== null) {
|
|
364
|
+
// was set as data, apply mask
|
|
365
|
+
const dark = (allBits[bi++] ?? 0) === 1;
|
|
366
|
+
maskedMatrix[row][c] = maskFn(row, c) ? !dark : dark;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
gu = !gu;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Format string for ECC level M (01), mask pattern 0 (000)
|
|
374
|
+
// Format info = 01000 XOR 101010000010010 = 110010111100101
|
|
375
|
+
// Precomputed: ECC-M + mask-0 = format bits 101000000100101 (with BCH)
|
|
376
|
+
// Using known correct value for M+mask0: 0x5647 -> bits[14..0]
|
|
377
|
+
// Actually standard value: ECC-M=1, mask=0 -> data=01_000 -> format=01000 00000000
|
|
378
|
+
// BCH(01000)=0100000000+BCH = let's use precomputed: 0x72F3 for M+mask2, etc.
|
|
379
|
+
// Correct precomputed format words (ECC-M=0b01, masks 0-7):
|
|
380
|
+
const formatWords = [
|
|
381
|
+
0x5412, 0x5125, 0x5E7C, 0x5B4B, 0x45F9, 0x40CE, 0x4F97, 0x4AA0,
|
|
382
|
+
];
|
|
383
|
+
const formatWord = formatWords[0]; // mask 0
|
|
384
|
+
const formatXor = 0b101010000010010;
|
|
385
|
+
const fmt = (formatWord ^ formatXor) & 0x7FFF;
|
|
386
|
+
const fmtBits = Array.from({ length: 15 }, (_, i) => (fmt >> (14 - i)) & 1);
|
|
387
|
+
// Place format bits around finder patterns
|
|
388
|
+
// Around top-left finder:
|
|
389
|
+
const fmtPositions1 = [
|
|
390
|
+
[8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 7], [8, 8],
|
|
391
|
+
[7, 8], [5, 8], [4, 8], [3, 8], [2, 8], [1, 8], [0, 8],
|
|
392
|
+
];
|
|
393
|
+
fmtPositions1.forEach(([r, c], i) => {
|
|
394
|
+
maskedMatrix[r][c] = fmtBits[i] === 1;
|
|
395
|
+
});
|
|
396
|
+
// Around top-right and bottom-left finders:
|
|
397
|
+
const fmtPositions2 = [
|
|
398
|
+
[8, size - 8], [8, size - 7], [8, size - 6], [8, size - 5],
|
|
399
|
+
[8, size - 4], [8, size - 3], [8, size - 2], [8, size - 1],
|
|
400
|
+
];
|
|
401
|
+
fmtPositions2.forEach(([r, c], i) => {
|
|
402
|
+
maskedMatrix[r][c] = fmtBits[i] === 1;
|
|
403
|
+
});
|
|
404
|
+
const fmtPositions3 = [
|
|
405
|
+
[size - 7, 8], [size - 6, 8], [size - 5, 8],
|
|
406
|
+
[size - 4, 8], [size - 3, 8], [size - 2, 8], [size - 1, 8],
|
|
407
|
+
];
|
|
408
|
+
fmtPositions3.forEach(([r, c], i) => {
|
|
409
|
+
maskedMatrix[r][c] = fmtBits[i + 8] === 1;
|
|
410
|
+
});
|
|
411
|
+
return { size, modules: maskedMatrix };
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Generate a QR code matrix for the given data string.
|
|
415
|
+
* Tries qrencode CLI first; falls back to minimal built-in implementation.
|
|
416
|
+
*/
|
|
417
|
+
export function generateQrMatrix(data) {
|
|
418
|
+
const fromCli = tryQrencode(data);
|
|
419
|
+
if (fromCli !== null)
|
|
420
|
+
return fromCli;
|
|
421
|
+
return generateQrMatrixMinimal(data);
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Render a QR matrix to a Unicode block string suitable for terminal output.
|
|
425
|
+
* Uses half-block characters to pack 2 rows into 1 terminal row.
|
|
426
|
+
*
|
|
427
|
+
* - Full block `█` = dark top + dark bottom
|
|
428
|
+
* - Upper half `▀` = dark top + light bottom
|
|
429
|
+
* - Lower half `▄` = light top + dark bottom
|
|
430
|
+
* - Space ` ` = light top + light bottom
|
|
431
|
+
*/
|
|
432
|
+
export function renderQrToString(matrix) {
|
|
433
|
+
const { size, modules } = matrix;
|
|
434
|
+
const lines = [];
|
|
435
|
+
for (let row = 0; row < size; row += 2) {
|
|
436
|
+
let line = '';
|
|
437
|
+
for (let col = 0; col < size; col++) {
|
|
438
|
+
const top = modules[row]?.[col] ?? false;
|
|
439
|
+
const bottom = modules[row + 1]?.[col] ?? false;
|
|
440
|
+
if (top && bottom)
|
|
441
|
+
line += '\u2588'; // full block
|
|
442
|
+
else if (top && !bottom)
|
|
443
|
+
line += '\u2580'; // upper half
|
|
444
|
+
else if (!top && bottom)
|
|
445
|
+
line += '\u2584'; // lower half
|
|
446
|
+
else
|
|
447
|
+
line += ' '; // space
|
|
448
|
+
}
|
|
449
|
+
lines.push(line);
|
|
450
|
+
}
|
|
451
|
+
return lines.join('\n');
|
|
452
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
let version = '0.18.
|
|
3
|
+
let version = '0.18.30';
|
|
4
4
|
try {
|
|
5
5
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
|
|
6
6
|
version = pkg.version ?? version;
|
package/package.json
CHANGED