@murphai/murph 0.1.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/CHANGELOG.md +2009 -0
- package/LICENSE +674 -0
- package/README.md +97 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/assistant/automation/run-loop.d.ts +21 -0
- package/dist/assistant/automation/run-loop.d.ts.map +1 -0
- package/dist/assistant/automation/run-loop.js +31 -0
- package/dist/assistant/automation/run-loop.js.map +1 -0
- package/dist/assistant/automation.d.ts +10 -0
- package/dist/assistant/automation.d.ts.map +1 -0
- package/dist/assistant/automation.js +5 -0
- package/dist/assistant/automation.js.map +1 -0
- package/dist/assistant/cron.d.ts +19 -0
- package/dist/assistant/cron.d.ts.map +1 -0
- package/dist/assistant/cron.js +59 -0
- package/dist/assistant/cron.js.map +1 -0
- package/dist/assistant/doctor-security.d.ts +15 -0
- package/dist/assistant/doctor-security.d.ts.map +1 -0
- package/dist/assistant/doctor-security.js +172 -0
- package/dist/assistant/doctor-security.js.map +1 -0
- package/dist/assistant/doctor.d.ts +5 -0
- package/dist/assistant/doctor.d.ts.map +1 -0
- package/dist/assistant/doctor.js +527 -0
- package/dist/assistant/doctor.js.map +1 -0
- package/dist/assistant/outbox.d.ts +19 -0
- package/dist/assistant/outbox.d.ts.map +1 -0
- package/dist/assistant/outbox.js +28 -0
- package/dist/assistant/outbox.js.map +1 -0
- package/dist/assistant/provider-catalog.d.ts +61 -0
- package/dist/assistant/provider-catalog.d.ts.map +1 -0
- package/dist/assistant/provider-catalog.js +205 -0
- package/dist/assistant/provider-catalog.js.map +1 -0
- package/dist/assistant/service.d.ts +85 -0
- package/dist/assistant/service.d.ts.map +1 -0
- package/dist/assistant/service.js +26 -0
- package/dist/assistant/service.js.map +1 -0
- package/dist/assistant/status.d.ts +9 -0
- package/dist/assistant/status.d.ts.map +1 -0
- package/dist/assistant/status.js +16 -0
- package/dist/assistant/status.js.map +1 -0
- package/dist/assistant/stop.d.ts +20 -0
- package/dist/assistant/stop.d.ts.map +1 -0
- package/dist/assistant/stop.js +142 -0
- package/dist/assistant/stop.js.map +1 -0
- package/dist/assistant/store.d.ts +6 -0
- package/dist/assistant/store.d.ts.map +1 -0
- package/dist/assistant/store.js +21 -0
- package/dist/assistant/store.js.map +1 -0
- package/dist/assistant/ui/ink.d.ts +247 -0
- package/dist/assistant/ui/ink.d.ts.map +1 -0
- package/dist/assistant/ui/ink.js +2417 -0
- package/dist/assistant/ui/ink.js.map +1 -0
- package/dist/assistant/ui/theme.d.ts +64 -0
- package/dist/assistant/ui/theme.d.ts.map +1 -0
- package/dist/assistant/ui/theme.js +180 -0
- package/dist/assistant/ui/theme.js.map +1 -0
- package/dist/assistant/ui/view-model.d.ts +89 -0
- package/dist/assistant/ui/view-model.d.ts.map +1 -0
- package/dist/assistant/ui/view-model.js +298 -0
- package/dist/assistant/ui/view-model.js.map +1 -0
- package/dist/assistant-chat-ink.d.ts +2 -0
- package/dist/assistant-chat-ink.d.ts.map +1 -0
- package/dist/assistant-chat-ink.js +2 -0
- package/dist/assistant-chat-ink.js.map +1 -0
- package/dist/assistant-daemon-client.d.ts +81 -0
- package/dist/assistant-daemon-client.d.ts.map +1 -0
- package/dist/assistant-daemon-client.js +473 -0
- package/dist/assistant-daemon-client.js.map +1 -0
- package/dist/assistant-runtime.d.ts +25 -0
- package/dist/assistant-runtime.d.ts.map +1 -0
- package/dist/assistant-runtime.js +17 -0
- package/dist/assistant-runtime.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli-entry.d.ts +10 -0
- package/dist/cli-entry.d.ts.map +1 -0
- package/dist/cli-entry.js +127 -0
- package/dist/cli-entry.js.map +1 -0
- package/dist/commands/assistant.d.ts +5 -0
- package/dist/commands/assistant.d.ts.map +1 -0
- package/dist/commands/assistant.js +1663 -0
- package/dist/commands/assistant.js.map +1 -0
- package/dist/commands/audit-command-helpers.d.ts +15 -0
- package/dist/commands/audit-command-helpers.d.ts.map +1 -0
- package/dist/commands/audit-command-helpers.js +24 -0
- package/dist/commands/audit-command-helpers.js.map +1 -0
- package/dist/commands/audit.d.ts +4 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +107 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/device.d.ts +4 -0
- package/dist/commands/device.d.ts.map +1 -0
- package/dist/commands/device.js +177 -0
- package/dist/commands/device.js.map +1 -0
- package/dist/commands/document.d.ts +4 -0
- package/dist/commands/document.d.ts.map +1 -0
- package/dist/commands/document.js +117 -0
- package/dist/commands/document.js.map +1 -0
- package/dist/commands/event.d.ts +4 -0
- package/dist/commands/event.d.ts.map +1 -0
- package/dist/commands/event.js +136 -0
- package/dist/commands/event.js.map +1 -0
- package/dist/commands/experiment.d.ts +4 -0
- package/dist/commands/experiment.d.ts.map +1 -0
- package/dist/commands/experiment.js +140 -0
- package/dist/commands/experiment.js.map +1 -0
- package/dist/commands/export-intake-read-helpers.d.ts +150 -0
- package/dist/commands/export-intake-read-helpers.d.ts.map +1 -0
- package/dist/commands/export-intake-read-helpers.js +328 -0
- package/dist/commands/export-intake-read-helpers.js.map +1 -0
- package/dist/commands/export.d.ts +4 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +179 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/food.d.ts +4 -0
- package/dist/commands/food.d.ts.map +1 -0
- package/dist/commands/food.js +190 -0
- package/dist/commands/food.js.map +1 -0
- package/dist/commands/health-command-factory.d.ts +230 -0
- package/dist/commands/health-command-factory.d.ts.map +1 -0
- package/dist/commands/health-command-factory.js +551 -0
- package/dist/commands/health-command-factory.js.map +1 -0
- package/dist/commands/health-entity-command-registry.d.ts +27 -0
- package/dist/commands/health-entity-command-registry.d.ts.map +1 -0
- package/dist/commands/health-entity-command-registry.js +84 -0
- package/dist/commands/health-entity-command-registry.js.map +1 -0
- package/dist/commands/inbox.d.ts +5 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +841 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/intake.d.ts +4 -0
- package/dist/commands/intake.d.ts.map +1 -0
- package/dist/commands/intake.js +175 -0
- package/dist/commands/intake.js.map +1 -0
- package/dist/commands/intervention.d.ts +4 -0
- package/dist/commands/intervention.d.ts.map +1 -0
- package/dist/commands/intervention.js +122 -0
- package/dist/commands/intervention.js.map +1 -0
- package/dist/commands/journal.d.ts +12 -0
- package/dist/commands/journal.d.ts.map +1 -0
- package/dist/commands/journal.js +186 -0
- package/dist/commands/journal.js.map +1 -0
- package/dist/commands/meal.d.ts +4 -0
- package/dist/commands/meal.d.ts.map +1 -0
- package/dist/commands/meal.js +123 -0
- package/dist/commands/meal.js.map +1 -0
- package/dist/commands/profile.d.ts +4 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +62 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/protocol.d.ts +4 -0
- package/dist/commands/protocol.d.ts.map +1 -0
- package/dist/commands/protocol.js +79 -0
- package/dist/commands/protocol.js.map +1 -0
- package/dist/commands/provider.d.ts +4 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +115 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/read.d.ts +4 -0
- package/dist/commands/read.d.ts.map +1 -0
- package/dist/commands/read.js +55 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/recipe.d.ts +4 -0
- package/dist/commands/recipe.d.ts.map +1 -0
- package/dist/commands/recipe.js +116 -0
- package/dist/commands/recipe.js.map +1 -0
- package/dist/commands/record-mutation-command-helpers.d.ts +196 -0
- package/dist/commands/record-mutation-command-helpers.d.ts.map +1 -0
- package/dist/commands/record-mutation-command-helpers.js +150 -0
- package/dist/commands/record-mutation-command-helpers.js.map +1 -0
- package/dist/commands/research.d.ts +3 -0
- package/dist/commands/research.d.ts.map +1 -0
- package/dist/commands/research.js +104 -0
- package/dist/commands/research.js.map +1 -0
- package/dist/commands/sample-batch-command-helpers.d.ts +24 -0
- package/dist/commands/sample-batch-command-helpers.d.ts.map +1 -0
- package/dist/commands/sample-batch-command-helpers.js +99 -0
- package/dist/commands/sample-batch-command-helpers.js.map +1 -0
- package/dist/commands/sample-import-command-helpers.d.ts +24 -0
- package/dist/commands/sample-import-command-helpers.d.ts.map +1 -0
- package/dist/commands/sample-import-command-helpers.js +49 -0
- package/dist/commands/sample-import-command-helpers.js.map +1 -0
- package/dist/commands/sample-query-command-helpers.d.ts +11 -0
- package/dist/commands/sample-query-command-helpers.d.ts.map +1 -0
- package/dist/commands/sample-query-command-helpers.js +26 -0
- package/dist/commands/sample-query-command-helpers.js.map +1 -0
- package/dist/commands/samples.d.ts +4 -0
- package/dist/commands/samples.d.ts.map +1 -0
- package/dist/commands/samples.js +261 -0
- package/dist/commands/samples.js.map +1 -0
- package/dist/commands/search.d.ts +4 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +295 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/supplement.d.ts +4 -0
- package/dist/commands/supplement.d.ts.map +1 -0
- package/dist/commands/supplement.js +338 -0
- package/dist/commands/supplement.js.map +1 -0
- package/dist/commands/vault.d.ts +4 -0
- package/dist/commands/vault.d.ts.map +1 -0
- package/dist/commands/vault.js +164 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/commands/workout.d.ts +4 -0
- package/dist/commands/workout.d.ts.map +1 -0
- package/dist/commands/workout.js +284 -0
- package/dist/commands/workout.js.map +1 -0
- package/dist/incur.generated.d.ts +2164 -0
- package/dist/incur.generated.d.ts.map +1 -0
- package/dist/incur.generated.js +2 -0
- package/dist/incur.generated.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/research-cli-contracts.d.ts +22 -0
- package/dist/research-cli-contracts.d.ts.map +1 -0
- package/dist/research-cli-contracts.js +18 -0
- package/dist/research-cli-contracts.js.map +1 -0
- package/dist/research-runtime.d.ts +79 -0
- package/dist/research-runtime.d.ts.map +1 -0
- package/dist/research-runtime.js +351 -0
- package/dist/research-runtime.js.map +1 -0
- package/dist/run-terminal-logging.d.ts +12 -0
- package/dist/run-terminal-logging.d.ts.map +1 -0
- package/dist/run-terminal-logging.js +323 -0
- package/dist/run-terminal-logging.js.map +1 -0
- package/dist/setup-agentmail.d.ts +30 -0
- package/dist/setup-agentmail.d.ts.map +1 -0
- package/dist/setup-agentmail.js +136 -0
- package/dist/setup-agentmail.js.map +1 -0
- package/dist/setup-assistant-account.d.ts +29 -0
- package/dist/setup-assistant-account.d.ts.map +1 -0
- package/dist/setup-assistant-account.js +443 -0
- package/dist/setup-assistant-account.js.map +1 -0
- package/dist/setup-assistant.d.ts +34 -0
- package/dist/setup-assistant.d.ts.map +1 -0
- package/dist/setup-assistant.js +355 -0
- package/dist/setup-assistant.js.map +1 -0
- package/dist/setup-cli.d.ts +72 -0
- package/dist/setup-cli.d.ts.map +1 -0
- package/dist/setup-cli.js +387 -0
- package/dist/setup-cli.js.map +1 -0
- package/dist/setup-services/channels.d.ts +19 -0
- package/dist/setup-services/channels.d.ts.map +1 -0
- package/dist/setup-services/channels.js +721 -0
- package/dist/setup-services/channels.js.map +1 -0
- package/dist/setup-services/process.d.ts +18 -0
- package/dist/setup-services/process.d.ts.map +1 -0
- package/dist/setup-services/process.js +98 -0
- package/dist/setup-services/process.js.map +1 -0
- package/dist/setup-services/scheduled-updates.d.ts +9 -0
- package/dist/setup-services/scheduled-updates.d.ts.map +1 -0
- package/dist/setup-services/scheduled-updates.js +64 -0
- package/dist/setup-services/scheduled-updates.js.map +1 -0
- package/dist/setup-services/shell.d.ts +18 -0
- package/dist/setup-services/shell.d.ts.map +1 -0
- package/dist/setup-services/shell.js +447 -0
- package/dist/setup-services/shell.js.map +1 -0
- package/dist/setup-services/steps.d.ts +39 -0
- package/dist/setup-services/steps.d.ts.map +1 -0
- package/dist/setup-services/steps.js +86 -0
- package/dist/setup-services/steps.js.map +1 -0
- package/dist/setup-services/toolchain.d.ts +46 -0
- package/dist/setup-services/toolchain.d.ts.map +1 -0
- package/dist/setup-services/toolchain.js +232 -0
- package/dist/setup-services/toolchain.js.map +1 -0
- package/dist/setup-services.d.ts +44 -0
- package/dist/setup-services.d.ts.map +1 -0
- package/dist/setup-services.js +739 -0
- package/dist/setup-services.js.map +1 -0
- package/dist/setup-wizard.d.ts +101 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +1458 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/usecases/intervention.d.ts +63 -0
- package/dist/usecases/intervention.d.ts.map +1 -0
- package/dist/usecases/intervention.js +205 -0
- package/dist/usecases/intervention.js.map +1 -0
- package/dist/usecases/text-duration.d.ts +4 -0
- package/dist/usecases/text-duration.d.ts.map +1 -0
- package/dist/usecases/text-duration.js +63 -0
- package/dist/usecases/text-duration.js.map +1 -0
- package/dist/usecases/workout-format.d.ts +139 -0
- package/dist/usecases/workout-format.d.ts.map +1 -0
- package/dist/usecases/workout-format.js +445 -0
- package/dist/usecases/workout-format.js.map +1 -0
- package/dist/usecases/workout.d.ts +94 -0
- package/dist/usecases/workout.d.ts.map +1 -0
- package/dist/usecases/workout.js +411 -0
- package/dist/usecases/workout.js.map +1 -0
- package/dist/vault-cli-command-manifest.d.ts +562 -0
- package/dist/vault-cli-command-manifest.d.ts.map +1 -0
- package/dist/vault-cli-command-manifest.js +759 -0
- package/dist/vault-cli-command-manifest.js.map +1 -0
- package/dist/vault-cli.d.ts +6 -0
- package/dist/vault-cli.d.ts.map +1 -0
- package/dist/vault-cli.js +38 -0
- package/dist/vault-cli.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { AssistantChatProvider } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
2
|
+
import { type AssistantProviderConfig, type AssistantProviderConfigInput } from '@murphai/assistant-core/assistant-provider';
|
|
3
|
+
import { type AssistantCatalogModel, type AssistantModelDiscoveryResult, type AssistantProviderCapabilities } from '@murphai/assistant-core/assistant-provider';
|
|
4
|
+
export type { AssistantCatalogModel, AssistantModelDiscoveryResult, } from '@murphai/assistant-core/assistant-provider';
|
|
5
|
+
export interface AssistantModelOption {
|
|
6
|
+
description: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}
|
|
9
|
+
export interface AssistantReasoningOption {
|
|
10
|
+
description: string;
|
|
11
|
+
label: string;
|
|
12
|
+
value: string;
|
|
13
|
+
}
|
|
14
|
+
export type AssistantProviderProfile = AssistantProviderConfig & {
|
|
15
|
+
providerLabel: string;
|
|
16
|
+
};
|
|
17
|
+
export interface AssistantModelCatalog {
|
|
18
|
+
capabilities: AssistantProviderCapabilities;
|
|
19
|
+
discovery: AssistantModelDiscoveryResult | null;
|
|
20
|
+
modelOptions: readonly AssistantModelOption[];
|
|
21
|
+
models: readonly AssistantCatalogModel[];
|
|
22
|
+
provider: AssistantChatProvider;
|
|
23
|
+
providerLabel: string;
|
|
24
|
+
reasoningOptions: readonly AssistantReasoningOption[];
|
|
25
|
+
selectedModel: AssistantCatalogModel | null;
|
|
26
|
+
}
|
|
27
|
+
export declare const DEFAULT_ASSISTANT_CHAT_MODEL_OPTIONS: readonly AssistantModelOption[];
|
|
28
|
+
export declare const DEFAULT_ASSISTANT_REASONING_OPTIONS: readonly AssistantReasoningOption[];
|
|
29
|
+
export declare function resolveAssistantProviderCapabilities(provider: AssistantChatProvider): AssistantProviderCapabilities;
|
|
30
|
+
export declare function resolveAssistantTargetCapabilities(input: AssistantProviderConfigInput | null | undefined): AssistantProviderCapabilities;
|
|
31
|
+
export declare function resolveAssistantProviderProfile(input: AssistantProviderConfigInput | null | undefined): AssistantProviderProfile;
|
|
32
|
+
export declare function resolveAssistantModelCatalog(input: {
|
|
33
|
+
apiKeyEnv?: string | null;
|
|
34
|
+
baseUrl?: string | null;
|
|
35
|
+
currentModel?: string | null;
|
|
36
|
+
currentReasoningEffort?: string | null;
|
|
37
|
+
discoveredModels?: readonly string[] | null;
|
|
38
|
+
discovery?: AssistantModelDiscoveryResult | null;
|
|
39
|
+
headers?: Record<string, string> | null;
|
|
40
|
+
oss?: boolean | null;
|
|
41
|
+
provider?: AssistantChatProvider | null;
|
|
42
|
+
providerName?: string | null;
|
|
43
|
+
}): AssistantModelCatalog;
|
|
44
|
+
export declare function discoverAssistantProviderModels(input: {
|
|
45
|
+
apiKeyEnv?: string | null;
|
|
46
|
+
baseUrl?: string | null;
|
|
47
|
+
env?: NodeJS.ProcessEnv;
|
|
48
|
+
headers?: Record<string, string> | null;
|
|
49
|
+
provider: AssistantChatProvider;
|
|
50
|
+
providerName?: string | null;
|
|
51
|
+
}): Promise<AssistantModelDiscoveryResult>;
|
|
52
|
+
export declare function defaultDiscoverOpenAICompatibleModels(baseUrl: string | null | undefined, options?: {
|
|
53
|
+
apiKeyEnv?: string | null;
|
|
54
|
+
env?: NodeJS.ProcessEnv;
|
|
55
|
+
headers?: Record<string, string> | null;
|
|
56
|
+
providerName?: string | null;
|
|
57
|
+
}): Promise<string[]>;
|
|
58
|
+
export declare function resolveAssistantCatalogReasoningOptions(model: AssistantCatalogModel | null | undefined): readonly AssistantReasoningOption[];
|
|
59
|
+
export declare function findAssistantCatalogModelOptionIndex(model: string | null, options: readonly AssistantModelOption[]): number;
|
|
60
|
+
export declare function findAssistantCatalogReasoningOptionIndex(reasoningEffort: string | null, options: readonly AssistantReasoningOption[]): number;
|
|
61
|
+
//# sourceMappingURL=provider-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-catalog.d.ts","sourceRoot":"","sources":["../../src/assistant/provider-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { normalizeAssistantProviderConfig, } from '@murphai/assistant-core/assistant-provider';
|
|
2
|
+
import { createCatalogModel, discoverAssistantProviderModels as discoverAssistantProviderModelsWithRegistry, resolveAssistantProviderTargetCapabilities as resolveAssistantProviderRegistryTargetCapabilities, resolveAssistantProviderCapabilities as resolveAssistantProviderRegistryCapabilities, resolveAssistantProviderLabel, resolveAssistantProviderStaticModels, } from '@murphai/assistant-core/assistant-provider';
|
|
3
|
+
import { normalizeNullableString } from '@murphai/assistant-core/assistant-runtime';
|
|
4
|
+
export const DEFAULT_ASSISTANT_CHAT_MODEL_OPTIONS = resolveAssistantProviderStaticModels({
|
|
5
|
+
provider: 'codex-cli',
|
|
6
|
+
}).map((model) => ({
|
|
7
|
+
value: model.id,
|
|
8
|
+
description: model.description,
|
|
9
|
+
}));
|
|
10
|
+
export const DEFAULT_ASSISTANT_REASONING_OPTIONS = [
|
|
11
|
+
{
|
|
12
|
+
value: 'low',
|
|
13
|
+
label: 'Low',
|
|
14
|
+
description: 'Fast responses with lighter reasoning',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
value: 'medium',
|
|
18
|
+
label: 'Medium',
|
|
19
|
+
description: 'Balances speed and reasoning depth for everyday tasks',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
value: 'high',
|
|
23
|
+
label: 'High',
|
|
24
|
+
description: 'Greater reasoning depth for complex problems',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: 'xhigh',
|
|
28
|
+
label: 'Extra high',
|
|
29
|
+
description: 'Extra high reasoning depth for complex problems',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
export function resolveAssistantProviderCapabilities(provider) {
|
|
33
|
+
return resolveAssistantProviderRegistryCapabilities(provider);
|
|
34
|
+
}
|
|
35
|
+
export function resolveAssistantTargetCapabilities(input) {
|
|
36
|
+
return resolveAssistantProviderRegistryTargetCapabilities(input);
|
|
37
|
+
}
|
|
38
|
+
export function resolveAssistantProviderProfile(input) {
|
|
39
|
+
const normalized = normalizeAssistantProviderConfig(input);
|
|
40
|
+
return {
|
|
41
|
+
...normalized,
|
|
42
|
+
providerLabel: resolveAssistantProviderLabel(normalized),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function resolveAssistantModelCatalog(input) {
|
|
46
|
+
const profile = resolveAssistantProviderProfile(input);
|
|
47
|
+
const capabilities = resolveAssistantTargetCapabilities(profile);
|
|
48
|
+
const staticModels = resolveAssistantProviderStaticModels(profile);
|
|
49
|
+
const discovery = normalizeAssistantModelDiscoveryResult({
|
|
50
|
+
capabilities,
|
|
51
|
+
discovery: input.discovery ??
|
|
52
|
+
(input.discoveredModels
|
|
53
|
+
? {
|
|
54
|
+
models: input.discoveredModels.map((model) => createCatalogModel({
|
|
55
|
+
id: model,
|
|
56
|
+
description: `Discovered from ${profile.providerLabel}.`,
|
|
57
|
+
source: 'discovered',
|
|
58
|
+
capabilities: resolveAssistantCatalogModelCapabilities(profile, capabilities),
|
|
59
|
+
})),
|
|
60
|
+
status: 'ok',
|
|
61
|
+
message: null,
|
|
62
|
+
}
|
|
63
|
+
: null),
|
|
64
|
+
profile,
|
|
65
|
+
});
|
|
66
|
+
const models = buildAssistantCatalogModels({
|
|
67
|
+
currentModel: input.currentModel,
|
|
68
|
+
discovery,
|
|
69
|
+
profile,
|
|
70
|
+
staticModels,
|
|
71
|
+
targetCapabilities: capabilities,
|
|
72
|
+
});
|
|
73
|
+
const selectedModel = models.find((model) => model.id === normalizeNullableString(input.currentModel)) ??
|
|
74
|
+
models[0] ??
|
|
75
|
+
null;
|
|
76
|
+
return {
|
|
77
|
+
capabilities,
|
|
78
|
+
discovery,
|
|
79
|
+
modelOptions: models.map((model) => ({
|
|
80
|
+
value: model.id,
|
|
81
|
+
description: model.description,
|
|
82
|
+
})),
|
|
83
|
+
models,
|
|
84
|
+
provider: profile.provider,
|
|
85
|
+
providerLabel: profile.providerLabel,
|
|
86
|
+
reasoningOptions: resolveAssistantCatalogReasoningOptions(selectedModel),
|
|
87
|
+
selectedModel,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export async function discoverAssistantProviderModels(input) {
|
|
91
|
+
return await discoverAssistantProviderModelsWithRegistry(input);
|
|
92
|
+
}
|
|
93
|
+
export async function defaultDiscoverOpenAICompatibleModels(baseUrl, options) {
|
|
94
|
+
const result = await discoverAssistantProviderModelsWithRegistry({
|
|
95
|
+
provider: 'openai-compatible',
|
|
96
|
+
baseUrl,
|
|
97
|
+
apiKeyEnv: options?.apiKeyEnv,
|
|
98
|
+
env: options?.env,
|
|
99
|
+
headers: options?.headers,
|
|
100
|
+
providerName: options?.providerName,
|
|
101
|
+
});
|
|
102
|
+
return result.models.map((model) => model.id);
|
|
103
|
+
}
|
|
104
|
+
export function resolveAssistantCatalogReasoningOptions(model) {
|
|
105
|
+
return model?.capabilities.reasoning ? DEFAULT_ASSISTANT_REASONING_OPTIONS : [];
|
|
106
|
+
}
|
|
107
|
+
export function findAssistantCatalogModelOptionIndex(model, options) {
|
|
108
|
+
if (options.length === 0) {
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
const normalizedModel = normalizeNullableString(model);
|
|
112
|
+
const index = options.findIndex((option) => option.value === normalizedModel);
|
|
113
|
+
return index >= 0 ? index : 0;
|
|
114
|
+
}
|
|
115
|
+
export function findAssistantCatalogReasoningOptionIndex(reasoningEffort, options) {
|
|
116
|
+
if (options.length === 0) {
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
const normalizedReasoningEffort = normalizeNullableString(reasoningEffort);
|
|
120
|
+
const index = options.findIndex((option) => option.value === normalizedReasoningEffort);
|
|
121
|
+
return index >= 0 ? index : Math.min(1, options.length - 1);
|
|
122
|
+
}
|
|
123
|
+
function buildAssistantCatalogModels(input) {
|
|
124
|
+
const normalizedCurrentModel = normalizeNullableString(input.currentModel);
|
|
125
|
+
const models = [];
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
const pushModel = (model) => {
|
|
128
|
+
if (!model) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const normalizedId = normalizeNullableString(model.id);
|
|
132
|
+
if (!normalizedId || seen.has(normalizedId)) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
seen.add(normalizedId);
|
|
136
|
+
models.push({
|
|
137
|
+
...model,
|
|
138
|
+
id: normalizedId,
|
|
139
|
+
label: normalizedId,
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
if (normalizedCurrentModel) {
|
|
143
|
+
pushModel(createCatalogModel({
|
|
144
|
+
id: normalizedCurrentModel,
|
|
145
|
+
description: buildCurrentModelDescription(input.profile),
|
|
146
|
+
source: 'current',
|
|
147
|
+
capabilities: input.staticModels.find((model) => model.id === normalizedCurrentModel)
|
|
148
|
+
?.capabilities ??
|
|
149
|
+
input.discovery?.models.find((model) => model.id === normalizedCurrentModel)
|
|
150
|
+
?.capabilities ??
|
|
151
|
+
resolveAssistantCatalogModelCapabilities(input.profile, input.targetCapabilities),
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
for (const model of input.staticModels) {
|
|
155
|
+
pushModel(model);
|
|
156
|
+
}
|
|
157
|
+
for (const model of input.discovery?.models ?? []) {
|
|
158
|
+
pushModel(model);
|
|
159
|
+
}
|
|
160
|
+
return models;
|
|
161
|
+
}
|
|
162
|
+
function buildCurrentModelDescription(profile) {
|
|
163
|
+
switch (profile.provider) {
|
|
164
|
+
case 'openai-compatible':
|
|
165
|
+
return `Current model from ${profile.providerLabel}.`;
|
|
166
|
+
case 'codex-cli':
|
|
167
|
+
return profile.oss ? 'Current Codex OSS model.' : 'Current Codex model.';
|
|
168
|
+
default:
|
|
169
|
+
return 'Current model.';
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function normalizeAssistantModelDiscoveryResult(input) {
|
|
173
|
+
if (!input.discovery) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
if (input.profile.provider === 'codex-cli') {
|
|
177
|
+
return input.discovery;
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
...input.discovery,
|
|
181
|
+
models: input.discovery.models.map((model) => ({
|
|
182
|
+
...model,
|
|
183
|
+
capabilities: resolveAssistantCatalogModelCapabilities(input.profile, input.capabilities),
|
|
184
|
+
})),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function resolveAssistantCatalogModelCapabilities(profile, capabilities) {
|
|
188
|
+
if (profile.provider === 'codex-cli') {
|
|
189
|
+
return {
|
|
190
|
+
images: false,
|
|
191
|
+
pdf: false,
|
|
192
|
+
reasoning: true,
|
|
193
|
+
streaming: true,
|
|
194
|
+
tools: true,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
images: false,
|
|
199
|
+
pdf: false,
|
|
200
|
+
reasoning: capabilities.supportsReasoningEffort,
|
|
201
|
+
streaming: true,
|
|
202
|
+
tools: true,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=provider-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../../src/assistant/provider-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { AssistantSession } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
2
|
+
import { type AssistantMessageInput, type AssistantSessionResolutionFields } from '@murphai/assistant-core/assistant-service';
|
|
3
|
+
export * from '@murphai/assistant-core/assistant-service';
|
|
4
|
+
export declare function openAssistantConversation(input: AssistantSessionResolutionFields): Promise<import("../assistant-daemon-client.js").AssistantDaemonOpenConversationResult>;
|
|
5
|
+
export declare function sendAssistantMessage(input: AssistantMessageInput): Promise<{
|
|
6
|
+
vault: string;
|
|
7
|
+
status: "completed";
|
|
8
|
+
prompt: string;
|
|
9
|
+
response: string;
|
|
10
|
+
session: {
|
|
11
|
+
schema: "murph.assistant-session.v3";
|
|
12
|
+
sessionId: string;
|
|
13
|
+
provider: "codex-cli" | "openai-compatible";
|
|
14
|
+
providerOptions: {
|
|
15
|
+
model: string | null;
|
|
16
|
+
reasoningEffort: string | null;
|
|
17
|
+
sandbox: "read-only" | "workspace-write" | "danger-full-access" | null;
|
|
18
|
+
approvalPolicy: "untrusted" | "on-request" | "never" | null;
|
|
19
|
+
profile: string | null;
|
|
20
|
+
oss: boolean;
|
|
21
|
+
baseUrl?: string | null | undefined;
|
|
22
|
+
apiKeyEnv?: string | null | undefined;
|
|
23
|
+
providerName?: string | null | undefined;
|
|
24
|
+
headers?: Record<string, string> | null | undefined;
|
|
25
|
+
};
|
|
26
|
+
providerBinding: {
|
|
27
|
+
provider: "codex-cli" | "openai-compatible";
|
|
28
|
+
providerSessionId: string | null;
|
|
29
|
+
providerOptions: {
|
|
30
|
+
model: string | null;
|
|
31
|
+
reasoningEffort: string | null;
|
|
32
|
+
sandbox: "read-only" | "workspace-write" | "danger-full-access" | null;
|
|
33
|
+
approvalPolicy: "untrusted" | "on-request" | "never" | null;
|
|
34
|
+
profile: string | null;
|
|
35
|
+
oss: boolean;
|
|
36
|
+
baseUrl?: string | null | undefined;
|
|
37
|
+
apiKeyEnv?: string | null | undefined;
|
|
38
|
+
providerName?: string | null | undefined;
|
|
39
|
+
headers?: Record<string, string> | null | undefined;
|
|
40
|
+
};
|
|
41
|
+
providerState?: {
|
|
42
|
+
resumeRouteId: string | null;
|
|
43
|
+
} | null | undefined;
|
|
44
|
+
} | null;
|
|
45
|
+
alias: string | null;
|
|
46
|
+
binding: {
|
|
47
|
+
conversationKey: string | null;
|
|
48
|
+
channel: string | null;
|
|
49
|
+
identityId: string | null;
|
|
50
|
+
actorId: string | null;
|
|
51
|
+
threadId: string | null;
|
|
52
|
+
threadIsDirect: boolean | null;
|
|
53
|
+
delivery: {
|
|
54
|
+
kind: "participant" | "thread";
|
|
55
|
+
target: string;
|
|
56
|
+
} | null;
|
|
57
|
+
};
|
|
58
|
+
createdAt: string;
|
|
59
|
+
updatedAt: string;
|
|
60
|
+
lastTurnAt: string | null;
|
|
61
|
+
turnCount: number;
|
|
62
|
+
};
|
|
63
|
+
delivery: {
|
|
64
|
+
channel: string;
|
|
65
|
+
idempotencyKey: string | null;
|
|
66
|
+
target: string;
|
|
67
|
+
targetKind: "participant" | "thread" | "explicit";
|
|
68
|
+
sentAt: string;
|
|
69
|
+
messageLength: number;
|
|
70
|
+
providerMessageId: string | null;
|
|
71
|
+
providerThreadId: string | null;
|
|
72
|
+
} | null;
|
|
73
|
+
deliveryDeferred: boolean;
|
|
74
|
+
deliveryIntentId: string | null;
|
|
75
|
+
deliveryError: {
|
|
76
|
+
code: string | null;
|
|
77
|
+
message: string;
|
|
78
|
+
} | null;
|
|
79
|
+
}>;
|
|
80
|
+
export declare function updateAssistantSessionOptions(input: {
|
|
81
|
+
providerOptions: Partial<AssistantSession['providerOptions']>;
|
|
82
|
+
sessionId: string;
|
|
83
|
+
vault: string;
|
|
84
|
+
}): Promise<AssistantSession>;
|
|
85
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/assistant/service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAA;AACvF,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,gCAAgC,EACtC,MAAM,2CAA2C,CAAA;AAElD,cAAc,2CAA2C,CAAA;AAEzD,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,gCAAgC,0FAQxC;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQ7B;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,eAAe,EAAE,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAC7D,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAO5B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Thin daemon-aware wrapper around the assistant-core local assistant orchestration.
|
|
2
|
+
import { maybeOpenAssistantConversationViaDaemon, maybeSendAssistantMessageViaDaemon, maybeUpdateAssistantSessionOptionsViaDaemon, } from '../assistant-daemon-client.js';
|
|
3
|
+
import { openAssistantConversationLocal, sendAssistantMessageLocal, updateAssistantSessionOptionsLocal, } from '@murphai/assistant-core/assistant-service';
|
|
4
|
+
export * from '@murphai/assistant-core/assistant-service';
|
|
5
|
+
export async function openAssistantConversation(input) {
|
|
6
|
+
const remote = await maybeOpenAssistantConversationViaDaemon(input);
|
|
7
|
+
if (remote) {
|
|
8
|
+
return remote;
|
|
9
|
+
}
|
|
10
|
+
return openAssistantConversationLocal(input);
|
|
11
|
+
}
|
|
12
|
+
export async function sendAssistantMessage(input) {
|
|
13
|
+
const remote = await maybeSendAssistantMessageViaDaemon(input);
|
|
14
|
+
if (remote) {
|
|
15
|
+
return remote;
|
|
16
|
+
}
|
|
17
|
+
return sendAssistantMessageLocal(input);
|
|
18
|
+
}
|
|
19
|
+
export async function updateAssistantSessionOptions(input) {
|
|
20
|
+
const remote = await maybeUpdateAssistantSessionOptionsViaDaemon(input);
|
|
21
|
+
if (remote) {
|
|
22
|
+
return remote;
|
|
23
|
+
}
|
|
24
|
+
return updateAssistantSessionOptionsLocal(input);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/assistant/service.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EACL,uCAAuC,EACvC,kCAAkC,EAClC,2CAA2C,GAC5C,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,kCAAkC,GAGnC,MAAM,2CAA2C,CAAA;AAElD,cAAc,2CAA2C,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAuC;IAEvC,MAAM,MAAM,GAAG,MAAM,uCAAuC,CAAC,KAAK,CAAC,CAAA;IACnE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,kCAAkC,CAAC,KAAK,CAAC,CAAA;IAC9D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,KAInD;IACC,MAAM,MAAM,GAAG,MAAM,2CAA2C,CAAC,KAAK,CAAC,CAAA;IACvE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,kCAAkC,CAAC,KAAK,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AssistantStatusResult } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
2
|
+
export * from '@murphai/assistant-core/assistant-status';
|
|
3
|
+
export type { AssistantStatusResult } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
4
|
+
export declare function getAssistantStatus(input: string | {
|
|
5
|
+
limit?: number;
|
|
6
|
+
sessionId?: string | null;
|
|
7
|
+
vault: string;
|
|
8
|
+
}): Promise<AssistantStatusResult>;
|
|
9
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/assistant/status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAA;AAE5F,cAAc,0CAA0C,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAA;AAE5F,wBAAsB,kBAAkB,CACtC,KAAK,EACD,MAAM,GACN;IACE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;CACd,GACJ,OAAO,CAAC,qBAAqB,CAAC,CAYhC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { maybeGetAssistantStatusViaDaemon } from '../assistant-daemon-client.js';
|
|
2
|
+
import { getAssistantStatusLocal, } from '@murphai/assistant-core/assistant-status';
|
|
3
|
+
export * from '@murphai/assistant-core/assistant-status';
|
|
4
|
+
export async function getAssistantStatus(input) {
|
|
5
|
+
const normalizedInput = typeof input === 'string' ? { vault: input } : input;
|
|
6
|
+
const remote = await maybeGetAssistantStatusViaDaemon({
|
|
7
|
+
limit: normalizedInput.limit,
|
|
8
|
+
sessionId: normalizedInput.sessionId ?? null,
|
|
9
|
+
vault: normalizedInput.vault,
|
|
10
|
+
});
|
|
11
|
+
if (remote) {
|
|
12
|
+
return remote;
|
|
13
|
+
}
|
|
14
|
+
return getAssistantStatusLocal(input);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/assistant/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,EACL,uBAAuB,GACxB,MAAM,0CAA0C,CAAA;AAGjD,cAAc,0CAA0C,CAAA;AAGxD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAMK;IAEL,MAAM,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;IAC5E,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC;QACpD,KAAK,EAAE,eAAe,CAAC,KAAK;QAC5B,SAAS,EAAE,eAAe,CAAC,SAAS,IAAI,IAAI;QAC5C,KAAK,EAAE,eAAe,CAAC,KAAK;KAC7B,CAAC,CAAA;IACF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare function stopAssistantAutomation(input: {
|
|
2
|
+
forceKillTimeoutMs?: number;
|
|
3
|
+
killProcess?: (pid: number, signal?: NodeJS.Signals | number) => void;
|
|
4
|
+
now?: () => Date;
|
|
5
|
+
pollIntervalMs?: number;
|
|
6
|
+
sleep?: (milliseconds: number) => Promise<void>;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
vault: string;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
vault: string;
|
|
11
|
+
stateRoot: string;
|
|
12
|
+
stopped: boolean;
|
|
13
|
+
stopMethod: "signal" | "stale-lock-cleanup" | "force-kill";
|
|
14
|
+
pid: number | null;
|
|
15
|
+
startedAt: string | null;
|
|
16
|
+
stoppedAt: string;
|
|
17
|
+
command: string | null;
|
|
18
|
+
message: string;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=stop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/assistant/stop.ts"],"names":[],"mappings":"AAgBA,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAA;IACrE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;;;;;;;;;;GAuIA"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { assistantStopResultSchema } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
2
|
+
import { tryKillProcess } from '@murphai/assistant-core/process-kill';
|
|
3
|
+
import { VaultCliError } from '@murphai/assistant-core/vault-cli-errors';
|
|
4
|
+
import { redactAssistantDisplayPath, resolveAssistantStatePaths, } from './store.js';
|
|
5
|
+
import { clearAssistantAutomationRunLock, inspectAssistantAutomationRunLock, } from '@murphai/assistant-core/assistant-automation';
|
|
6
|
+
const ASSISTANT_AUTOMATION_STOP_TIMEOUT_MS = 5_000;
|
|
7
|
+
const ASSISTANT_AUTOMATION_FORCE_KILL_TIMEOUT_MS = 1_000;
|
|
8
|
+
const ASSISTANT_AUTOMATION_STOP_POLL_INTERVAL_MS = 100;
|
|
9
|
+
export async function stopAssistantAutomation(input) {
|
|
10
|
+
const paths = resolveAssistantStatePaths(input.vault);
|
|
11
|
+
const now = input.now ?? (() => new Date());
|
|
12
|
+
const sleep = input.sleep ??
|
|
13
|
+
(async (milliseconds) => {
|
|
14
|
+
await new Promise((resolve) => {
|
|
15
|
+
setTimeout(resolve, milliseconds);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
const killProcess = input.killProcess ??
|
|
19
|
+
((pid, signal) => {
|
|
20
|
+
process.kill(pid, signal);
|
|
21
|
+
});
|
|
22
|
+
const pollIntervalMs = normalizePositiveInt(input.pollIntervalMs, ASSISTANT_AUTOMATION_STOP_POLL_INTERVAL_MS);
|
|
23
|
+
const timeoutMs = normalizePositiveInt(input.timeoutMs, ASSISTANT_AUTOMATION_STOP_TIMEOUT_MS);
|
|
24
|
+
const forceKillTimeoutMs = normalizePositiveInt(input.forceKillTimeoutMs, ASSISTANT_AUTOMATION_FORCE_KILL_TIMEOUT_MS);
|
|
25
|
+
const initial = await inspectAssistantAutomationRunLock(paths);
|
|
26
|
+
if (initial.state === 'unlocked') {
|
|
27
|
+
throw new VaultCliError('ASSISTANT_AUTOMATION_NOT_RUNNING', 'Murph assistant automation is not currently running for this vault.');
|
|
28
|
+
}
|
|
29
|
+
const resultBase = {
|
|
30
|
+
vault: redactAssistantDisplayPath(paths.absoluteVaultRoot),
|
|
31
|
+
stateRoot: redactAssistantDisplayPath(paths.assistantStateRoot),
|
|
32
|
+
pid: initial.pid,
|
|
33
|
+
startedAt: initial.startedAt,
|
|
34
|
+
command: initial.command,
|
|
35
|
+
};
|
|
36
|
+
if (initial.state === 'stale') {
|
|
37
|
+
await clearAssistantAutomationRunLock(paths);
|
|
38
|
+
return assistantStopResultSchema.parse({
|
|
39
|
+
...resultBase,
|
|
40
|
+
stopped: true,
|
|
41
|
+
stopMethod: 'stale-lock-cleanup',
|
|
42
|
+
stoppedAt: now().toISOString(),
|
|
43
|
+
message: 'Removed stale assistant automation lock; the recorded process was already gone.',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (typeof initial.pid !== 'number') {
|
|
47
|
+
throw new VaultCliError('ASSISTANT_AUTOMATION_STOP_FAILED', 'Murph could not stop assistant automation because the active run lock did not include a PID.', {
|
|
48
|
+
command: initial.command,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
tryKillProcess(killProcess, initial.pid, 'SIGCONT');
|
|
52
|
+
tryKillProcess(killProcess, initial.pid, 'SIGTERM');
|
|
53
|
+
const afterTerminate = await waitForRunLockChange({
|
|
54
|
+
paths,
|
|
55
|
+
pollIntervalMs,
|
|
56
|
+
sleep,
|
|
57
|
+
targetPid: initial.pid,
|
|
58
|
+
timeoutMs,
|
|
59
|
+
});
|
|
60
|
+
const terminatedResult = await maybeBuildStopResult({
|
|
61
|
+
lock: afterTerminate,
|
|
62
|
+
message: 'Murph stopped the assistant automation loop.',
|
|
63
|
+
now,
|
|
64
|
+
paths,
|
|
65
|
+
resultBase,
|
|
66
|
+
stopMethod: 'signal',
|
|
67
|
+
staleMessage: 'Assistant automation stopped but left a stale run lock, so Murph cleared it.',
|
|
68
|
+
});
|
|
69
|
+
if (terminatedResult) {
|
|
70
|
+
return terminatedResult;
|
|
71
|
+
}
|
|
72
|
+
if (afterTerminate.state === 'active' && afterTerminate.pid !== initial.pid) {
|
|
73
|
+
throw new VaultCliError('ASSISTANT_AUTOMATION_RESTARTED', 'Assistant automation restarted under a different PID while Murph was stopping the original process.', {
|
|
74
|
+
expectedPid: initial.pid,
|
|
75
|
+
pid: afterTerminate.pid,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
tryKillProcess(killProcess, initial.pid, 'SIGKILL');
|
|
79
|
+
const afterForceKill = await waitForRunLockChange({
|
|
80
|
+
paths,
|
|
81
|
+
pollIntervalMs,
|
|
82
|
+
sleep,
|
|
83
|
+
targetPid: initial.pid,
|
|
84
|
+
timeoutMs: forceKillTimeoutMs,
|
|
85
|
+
});
|
|
86
|
+
const forcedResult = await maybeBuildStopResult({
|
|
87
|
+
lock: afterForceKill,
|
|
88
|
+
message: 'Murph force-killed the assistant automation loop after it ignored SIGTERM.',
|
|
89
|
+
now,
|
|
90
|
+
paths,
|
|
91
|
+
resultBase,
|
|
92
|
+
stopMethod: 'force-kill',
|
|
93
|
+
staleMessage: 'Murph force-killed the assistant automation loop and cleared the stale run lock.',
|
|
94
|
+
});
|
|
95
|
+
if (forcedResult) {
|
|
96
|
+
return forcedResult;
|
|
97
|
+
}
|
|
98
|
+
throw new VaultCliError('ASSISTANT_AUTOMATION_STOP_TIMEOUT', 'Assistant automation did not stop within the expected timeout.', {
|
|
99
|
+
pid: initial.pid,
|
|
100
|
+
command: initial.command,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
async function maybeBuildStopResult(input) {
|
|
104
|
+
if (input.lock.state === 'unlocked') {
|
|
105
|
+
return assistantStopResultSchema.parse({
|
|
106
|
+
...input.resultBase,
|
|
107
|
+
stopped: true,
|
|
108
|
+
stopMethod: input.stopMethod,
|
|
109
|
+
stoppedAt: input.now().toISOString(),
|
|
110
|
+
message: input.message,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (input.lock.state === 'stale') {
|
|
114
|
+
await clearAssistantAutomationRunLock(input.paths);
|
|
115
|
+
return assistantStopResultSchema.parse({
|
|
116
|
+
...input.resultBase,
|
|
117
|
+
stopped: true,
|
|
118
|
+
stopMethod: input.stopMethod,
|
|
119
|
+
stoppedAt: input.now().toISOString(),
|
|
120
|
+
message: input.staleMessage,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
async function waitForRunLockChange(input) {
|
|
126
|
+
const attempts = Math.max(1, Math.ceil(input.timeoutMs / input.pollIntervalMs));
|
|
127
|
+
for (let attempt = 0; attempt < attempts; attempt += 1) {
|
|
128
|
+
await input.sleep(input.pollIntervalMs);
|
|
129
|
+
const next = await inspectAssistantAutomationRunLock(input.paths);
|
|
130
|
+
if (next.state !== 'active' || next.pid !== input.targetPid) {
|
|
131
|
+
return next;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return inspectAssistantAutomationRunLock(input.paths);
|
|
135
|
+
}
|
|
136
|
+
function normalizePositiveInt(value, fallback) {
|
|
137
|
+
if (!Number.isFinite(value) || typeof value !== 'number') {
|
|
138
|
+
return fallback;
|
|
139
|
+
}
|
|
140
|
+
return Math.max(1, Math.trunc(value));
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/assistant/stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AssistantSession } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
2
|
+
export * from '@murphai/assistant-core/assistant-store';
|
|
3
|
+
export type { AssistantSession } from '@murphai/assistant-core/assistant-cli-contracts';
|
|
4
|
+
export declare function listAssistantSessions(vault: string): Promise<AssistantSession[]>;
|
|
5
|
+
export declare function getAssistantSession(vault: string, sessionId: string): Promise<AssistantSession>;
|
|
6
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/assistant/store.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAA;AAEvF,cAAc,yCAAyC,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAA;AAEvF,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAO7B;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAU3B"}
|