open-multi-agent-kit 0.96.1 → 0.97.0
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 +57 -0
- package/README.md +14 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/commands/resource-doctor-cli.d.ts +22 -0
- package/dist/commands/resource-doctor-cli.d.ts.map +1 -0
- package/dist/commands/resource-doctor-cli.js +98 -0
- package/dist/commands/resource-doctor-cli.js.map +1 -0
- package/dist/core/agent-session.d.ts +46 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +373 -12
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/attachment-store.d.ts +39 -0
- package/dist/core/attachment-store.d.ts.map +1 -0
- package/dist/core/attachment-store.js +81 -0
- package/dist/core/attachment-store.js.map +1 -0
- package/dist/core/command-safety.d.ts +8 -0
- package/dist/core/command-safety.d.ts.map +1 -1
- package/dist/core/command-safety.js +140 -14
- package/dist/core/command-safety.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +6 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +35 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/completion-sound.d.ts +109 -0
- package/dist/core/completion-sound.d.ts.map +1 -0
- package/dist/core/completion-sound.js +165 -0
- package/dist/core/completion-sound.js.map +1 -0
- package/dist/core/context-budget-governor-v2.d.ts +1 -1
- package/dist/core/context-budget-governor-v2.d.ts.map +1 -1
- package/dist/core/context-budget-governor-v2.js +1 -1
- package/dist/core/context-budget-governor-v2.js.map +1 -1
- package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -1
- package/dist/core/context-budget-system-prompt-items.js +2 -2
- package/dist/core/context-budget-system-prompt-items.js.map +1 -1
- package/dist/core/context-budget-v2-cache-keys.d.ts +3 -0
- package/dist/core/context-budget-v2-cache-keys.d.ts.map +1 -1
- package/dist/core/context-budget-v2-cache-keys.js +2 -0
- package/dist/core/context-budget-v2-cache-keys.js.map +1 -1
- package/dist/core/context-budget-v2-plan-cache-keys.d.ts.map +1 -1
- package/dist/core/context-budget-v2-plan-cache-keys.js +3 -0
- package/dist/core/context-budget-v2-plan-cache-keys.js.map +1 -1
- package/dist/core/context-budget-v2-planner.d.ts.map +1 -1
- package/dist/core/context-budget-v2-planner.js +2 -1
- package/dist/core/context-budget-v2-planner.js.map +1 -1
- package/dist/core/context-budget-v2-scoring.d.ts +17 -0
- package/dist/core/context-budget-v2-scoring.d.ts.map +1 -1
- package/dist/core/context-budget-v2-scoring.js +25 -8
- package/dist/core/context-budget-v2-scoring.js.map +1 -1
- package/dist/core/context-budget-v2-selection.d.ts +2 -2
- package/dist/core/context-budget-v2-selection.d.ts.map +1 -1
- package/dist/core/context-budget-v2-selection.js +18 -1
- package/dist/core/context-budget-v2-selection.js.map +1 -1
- package/dist/core/context-budget-v2-types.d.ts +17 -0
- package/dist/core/context-budget-v2-types.d.ts.map +1 -1
- package/dist/core/context-budget-v2-types.js +15 -0
- package/dist/core/context-budget-v2-types.js.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.d.ts +3 -1
- package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.js +7 -0
- package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -1
- package/dist/core/extensions/types.d.ts +12 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/host-resource-probe.d.ts +63 -0
- package/dist/core/host-resource-probe.d.ts.map +1 -0
- package/dist/core/host-resource-probe.js +126 -0
- package/dist/core/host-resource-probe.js.map +1 -0
- package/dist/core/host-resource-snapshot.d.ts +54 -0
- package/dist/core/host-resource-snapshot.d.ts.map +1 -0
- package/dist/core/host-resource-snapshot.js +139 -0
- package/dist/core/host-resource-snapshot.js.map +1 -0
- package/dist/core/model-registry.d.ts +8 -3
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +71 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/package-doctor-source-scan.d.ts +9 -0
- package/dist/core/package-doctor-source-scan.d.ts.map +1 -1
- package/dist/core/package-doctor-source-scan.js +77 -4
- package/dist/core/package-doctor-source-scan.js.map +1 -1
- package/dist/core/prompt-attachment.d.ts +51 -0
- package/dist/core/prompt-attachment.d.ts.map +1 -0
- package/dist/core/prompt-attachment.js +186 -0
- package/dist/core/prompt-attachment.js.map +1 -0
- package/dist/core/prompt-settlement.d.ts +81 -0
- package/dist/core/prompt-settlement.d.ts.map +1 -0
- package/dist/core/prompt-settlement.js +84 -0
- package/dist/core/prompt-settlement.js.map +1 -0
- package/dist/core/provider-resilience.d.ts +28 -0
- package/dist/core/provider-resilience.d.ts.map +1 -1
- package/dist/core/provider-resilience.js +51 -1
- package/dist/core/provider-resilience.js.map +1 -1
- package/dist/core/provider-retry.d.ts +7 -0
- package/dist/core/provider-retry.d.ts.map +1 -1
- package/dist/core/provider-retry.js +24 -0
- package/dist/core/provider-retry.js.map +1 -1
- package/dist/core/provider-usage.d.ts +15 -2
- package/dist/core/provider-usage.d.ts.map +1 -1
- package/dist/core/provider-usage.js +176 -2
- package/dist/core/provider-usage.js.map +1 -1
- package/dist/core/reasoning-router-promotion.d.ts +84 -0
- package/dist/core/reasoning-router-promotion.d.ts.map +1 -0
- package/dist/core/reasoning-router-promotion.js +92 -0
- package/dist/core/reasoning-router-promotion.js.map +1 -0
- package/dist/core/reasoning-router-resolver.d.ts.map +1 -1
- package/dist/core/reasoning-router-resolver.js +1 -1
- package/dist/core/reasoning-router-resolver.js.map +1 -1
- package/dist/core/resource-admission-config.d.ts +55 -0
- package/dist/core/resource-admission-config.d.ts.map +1 -0
- package/dist/core/resource-admission-config.js +97 -0
- package/dist/core/resource-admission-config.js.map +1 -0
- package/dist/core/resource-admission.d.ts +81 -0
- package/dist/core/resource-admission.d.ts.map +1 -0
- package/dist/core/resource-admission.js +128 -0
- package/dist/core/resource-admission.js.map +1 -0
- package/dist/core/resource-governor-format.d.ts +50 -0
- package/dist/core/resource-governor-format.d.ts.map +1 -0
- package/dist/core/resource-governor-format.js +113 -0
- package/dist/core/resource-governor-format.js.map +1 -0
- package/dist/core/resource-governor-settings.d.ts +56 -0
- package/dist/core/resource-governor-settings.d.ts.map +1 -0
- package/dist/core/resource-governor-settings.js +89 -0
- package/dist/core/resource-governor-settings.js.map +1 -0
- package/dist/core/resource-observation-journal.d.ts +74 -0
- package/dist/core/resource-observation-journal.d.ts.map +1 -0
- package/dist/core/resource-observation-journal.js +198 -0
- package/dist/core/resource-observation-journal.js.map +1 -0
- package/dist/core/resource-safety-gate.d.ts +54 -0
- package/dist/core/resource-safety-gate.d.ts.map +1 -0
- package/dist/core/resource-safety-gate.js +51 -0
- package/dist/core/resource-safety-gate.js.map +1 -0
- package/dist/core/run-journal.d.ts.map +1 -1
- package/dist/core/run-journal.js +13 -1
- package/dist/core/run-journal.js.map +1 -1
- package/dist/core/run-resource-lease.d.ts +73 -0
- package/dist/core/run-resource-lease.d.ts.map +1 -0
- package/dist/core/run-resource-lease.js +78 -0
- package/dist/core/run-resource-lease.js.map +1 -0
- package/dist/core/session-bash-service.d.ts +12 -0
- package/dist/core/session-bash-service.d.ts.map +1 -1
- package/dist/core/session-bash-service.js +18 -3
- package/dist/core/session-bash-service.js.map +1 -1
- package/dist/core/session-system-prompt.d.ts +2 -0
- package/dist/core/session-system-prompt.d.ts.map +1 -1
- package/dist/core/session-system-prompt.js +2 -0
- package/dist/core/session-system-prompt.js.map +1 -1
- package/dist/core/session-termination.d.ts +8 -3
- package/dist/core/session-termination.d.ts.map +1 -1
- package/dist/core/session-termination.js +40 -3
- package/dist/core/session-termination.js.map +1 -1
- package/dist/core/settings-manager.d.ts +12 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +36 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-lane-launcher.d.ts +64 -0
- package/dist/core/subagent-lane-launcher.d.ts.map +1 -0
- package/dist/core/subagent-lane-launcher.js +107 -0
- package/dist/core/subagent-lane-launcher.js.map +1 -0
- package/dist/core/system-cpu-sampler.d.ts +45 -0
- package/dist/core/system-cpu-sampler.d.ts.map +1 -0
- package/dist/core/system-cpu-sampler.js +95 -0
- package/dist/core/system-cpu-sampler.js.map +1 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +5 -8
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +3 -7
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +13 -48
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -34
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/workload-classifier.d.ts +32 -0
- package/dist/core/workload-classifier.d.ts.map +1 -0
- package/dist/core/workload-classifier.js +66 -0
- package/dist/core/workload-classifier.js.map +1 -0
- package/dist/core/workload-family-matcher.d.ts +3 -0
- package/dist/core/workload-family-matcher.d.ts.map +1 -0
- package/dist/core/workload-family-matcher.js +126 -0
- package/dist/core/workload-family-matcher.js.map +1 -0
- package/dist/core/workload-permit-pool.d.ts +78 -0
- package/dist/core/workload-permit-pool.d.ts.map +1 -0
- package/dist/core/workload-permit-pool.js +138 -0
- package/dist/core/workload-permit-pool.js.map +1 -0
- package/dist/core/workload-shard-executor.d.ts +68 -0
- package/dist/core/workload-shard-executor.d.ts.map +1 -0
- package/dist/core/workload-shard-executor.js +156 -0
- package/dist/core/workload-shard-executor.js.map +1 -0
- package/dist/core/workload-shard-plan.d.ts +81 -0
- package/dist/core/workload-shard-plan.d.ts.map +1 -0
- package/dist/core/workload-shard-plan.js +183 -0
- package/dist/core/workload-shard-plan.js.map +1 -0
- package/dist/core/workload-shard-runner.d.ts +11 -0
- package/dist/core/workload-shard-runner.d.ts.map +1 -0
- package/dist/core/workload-shard-runner.js +98 -0
- package/dist/core/workload-shard-runner.js.map +1 -0
- package/dist/core/workload-shard-store.d.ts +44 -0
- package/dist/core/workload-shard-store.d.ts.map +1 -0
- package/dist/core/workload-shard-store.js +189 -0
- package/dist/core/workload-shard-store.js.map +1 -0
- package/dist/core/workload-sharders.d.ts +47 -0
- package/dist/core/workload-sharders.d.ts.map +1 -0
- package/dist/core/workload-sharders.js +162 -0
- package/dist/core/workload-sharders.js.map +1 -0
- package/dist/core/workload-shell-scan.d.ts +12 -0
- package/dist/core/workload-shell-scan.d.ts.map +1 -0
- package/dist/core/workload-shell-scan.js +79 -0
- package/dist/core/workload-shell-scan.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/attachment-strip.d.ts +21 -0
- package/dist/modes/interactive/components/attachment-strip.d.ts.map +1 -0
- package/dist/modes/interactive/components/attachment-strip.js +136 -0
- package/dist/modes/interactive/components/attachment-strip.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +6 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +26 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/status-sidebar.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-sidebar.js +12 -1
- package/dist/modes/interactive/components/status-sidebar.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +27 -4
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +255 -53
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/compaction.md +1 -1
- package/docs/extensions.md +12 -3
- package/docs/index.md +4 -1
- package/docs/metrics.md +74 -2
- package/docs/provider-resilience.md +11 -0
- package/docs/providers.md +1 -1
- package/docs/sdk.md +4 -0
- package/docs/settings.md +64 -2
- package/docs/skills.md +16 -0
- package/docs/usage.md +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/agent-capability-router.test.ts +7 -0
- package/examples/extensions/subagent/domain-profiles.ts +0 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +18 -18
- package/package.json +8 -10
- package/dist/core/tools/omp-pure-seams.d.ts +0 -41
- package/dist/core/tools/omp-pure-seams.d.ts.map +0 -1
- package/dist/core/tools/omp-pure-seams.js +0 -142
- package/dist/core/tools/omp-pure-seams.js.map +0 -1
- package/dist/core/tools/omp-seam-runtime.d.ts +0 -100
- package/dist/core/tools/omp-seam-runtime.d.ts.map +0 -1
- package/dist/core/tools/omp-seam-runtime.js +0 -40
- package/dist/core/tools/omp-seam-runtime.js.map +0 -1
|
@@ -19,11 +19,14 @@ import type { BashResult } from "./bash-executor.ts";
|
|
|
19
19
|
import { type CompactionResult } from "./compaction/index.ts";
|
|
20
20
|
import { type ContextCacheInvalidationSnapshot } from "./context-budget-v2-cache-invalidation.ts";
|
|
21
21
|
import { type ContextUsage, type ExtensionCommandContextActions, type ExtensionErrorListener, type ExtensionMode, ExtensionRunner, type ExtensionUIContext, type InputSource, type ReplacedSessionContext, type SessionStartEvent, type ShutdownHandler, type ToolDefinition, type ToolInfo } from "./extensions/index.ts";
|
|
22
|
+
import { type HostResourceSnapshot } from "./host-resource-snapshot.ts";
|
|
22
23
|
import { type LoadoutAccessPolicy } from "./loadout-access-policy.ts";
|
|
23
24
|
import { type McpServerConfig, type McpServerStatus } from "./mcp/manager.ts";
|
|
24
25
|
import type { CustomMessage } from "./messages.ts";
|
|
25
26
|
import type { ModelRegistry } from "./model-registry.ts";
|
|
27
|
+
import { type PromptSettledEvent } from "./prompt-settlement.ts";
|
|
26
28
|
import { type PromptTemplate } from "./prompt-templates.ts";
|
|
29
|
+
import { type ResourceAdmissionDecision } from "./resource-admission.ts";
|
|
27
30
|
import type { ResourceLoader } from "./resource-loader.ts";
|
|
28
31
|
import type { RunJournalRecord } from "./run-journal.ts";
|
|
29
32
|
import { type RunJournalQuarantineReport } from "./run-journal-store.ts";
|
|
@@ -31,6 +34,7 @@ import type { BranchSummaryEntry, SessionManager } from "./session-manager.ts";
|
|
|
31
34
|
import { type SessionProcessSignal, type SessionTermination } from "./session-termination.ts";
|
|
32
35
|
import type { SettingsManager } from "./settings-manager.ts";
|
|
33
36
|
import { type BashOperations, type BashSandboxPreflight } from "./tools/bash.ts";
|
|
37
|
+
import { WorkloadPermitPool, type WorkloadPermitPoolSnapshot } from "./workload-permit-pool.ts";
|
|
34
38
|
/** Parsed skill block from a user message */
|
|
35
39
|
export interface ParsedSkillBlock {
|
|
36
40
|
name: string;
|
|
@@ -56,7 +60,7 @@ export type AgentSessionEvent = Exclude<AgentEvent, {
|
|
|
56
60
|
type: "agent_end";
|
|
57
61
|
messages: AgentMessage[];
|
|
58
62
|
willRetry: boolean;
|
|
59
|
-
} | {
|
|
63
|
+
} | PromptSettledEvent | {
|
|
60
64
|
type: "queue_update";
|
|
61
65
|
steering: readonly string[];
|
|
62
66
|
followUp: readonly string[];
|
|
@@ -334,6 +338,12 @@ export declare class AgentSession {
|
|
|
334
338
|
private readonly _runJournalStore;
|
|
335
339
|
private _ownedSessionOwnerLease;
|
|
336
340
|
private _activeRunId;
|
|
341
|
+
private _resourceLeaseController;
|
|
342
|
+
private _resourceObservations;
|
|
343
|
+
private readonly _resourceObservationJournals;
|
|
344
|
+
private _latestResourcePromptRunId;
|
|
345
|
+
private _lastResourceAdmission;
|
|
346
|
+
private _workloadPermitPool;
|
|
337
347
|
private _pendingRuntimeTerminationCause;
|
|
338
348
|
private _activeRunToolTermination;
|
|
339
349
|
private _lastTermination;
|
|
@@ -548,8 +558,34 @@ export declare class AgentSession {
|
|
|
548
558
|
* Prefers the model's own maxTokens when available, otherwise uses a ratio.
|
|
549
559
|
*/
|
|
550
560
|
private _recordPromptCachePlan;
|
|
561
|
+
private _getDefaultActiveSkills;
|
|
551
562
|
private _rebuildSystemPrompt;
|
|
552
563
|
private _runAgentPrompt;
|
|
564
|
+
/**
|
|
565
|
+
* Emit `prompt_settled` when the §16.4 conditions hold. Called exactly
|
|
566
|
+
* once per promptRunId (from `_runAgentPrompt`'s finally), so the same
|
|
567
|
+
* run can never emit twice; late-queued messages block emission
|
|
568
|
+
* conservatively — the continuation run settles under its own id.
|
|
569
|
+
* Settlement is a UX signal only and must never affect the run (§16.1).
|
|
570
|
+
*/
|
|
571
|
+
private _emitPromptSettledIfReady;
|
|
572
|
+
private _beginResourceGovernedRun;
|
|
573
|
+
private _openResourceObservations;
|
|
574
|
+
/** §20.2: record the TUI-side completion sound result in its originating run journal. */
|
|
575
|
+
recordCompletionSoundResult(promptRunId: string, result: import("./completion-sound.ts").CompletionSoundResult): void;
|
|
576
|
+
/** §19.4 read-only SDK surface: the most recent resource admission decision, if any. */
|
|
577
|
+
getCurrentResourceAdmission(): ResourceAdmissionDecision | null;
|
|
578
|
+
/** §19.4 read-only SDK surface: capture a fresh host resource snapshot. */
|
|
579
|
+
getHostResourceSnapshot(): Promise<HostResourceSnapshot>;
|
|
580
|
+
/** §19.4 read-only SDK surface: shared workload permit pool state, if any. */
|
|
581
|
+
getWorkloadPermitSnapshot(): WorkloadPermitPoolSnapshot | null;
|
|
582
|
+
/**
|
|
583
|
+
* §14.1 shared-budget seam: child subagents must reuse this instance
|
|
584
|
+
* instead of creating a private pool (host oversubscription). The live
|
|
585
|
+
* child launcher wiring lands in M6.
|
|
586
|
+
*/
|
|
587
|
+
get workloadPermitPool(): WorkloadPermitPool;
|
|
588
|
+
private _acquireBashResourcePermit;
|
|
553
589
|
private _handlePostAgentRun;
|
|
554
590
|
/**
|
|
555
591
|
* Send a prompt to the agent.
|
|
@@ -767,6 +803,13 @@ export declare class AgentSession {
|
|
|
767
803
|
private _runThresholdCompaction;
|
|
768
804
|
private _recordCompactionCommitForHysteresis;
|
|
769
805
|
private _resolveCompactionModel;
|
|
806
|
+
/**
|
|
807
|
+
* Authenticated failover candidates for compaction summarization, in
|
|
808
|
+
* resilience-chain order, excluding the primary compaction model itself.
|
|
809
|
+
* Used when the primary model's quota is exhausted (same-model retry is
|
|
810
|
+
* useless until reset; another provider can still save the compaction).
|
|
811
|
+
*/
|
|
812
|
+
private _compactionFailoverModels;
|
|
770
813
|
/**
|
|
771
814
|
* Manually compact the session context.
|
|
772
815
|
* Aborts current agent operation first.
|
|
@@ -786,7 +829,7 @@ export declare class AgentSession {
|
|
|
786
829
|
/**
|
|
787
830
|
* Effective context window for the upcoming turn.
|
|
788
831
|
* Image-bearing turns with a text-only session model are auto-routed to the
|
|
789
|
-
* vision model (gpt-5.6-luna,
|
|
832
|
+
* vision model (gpt-5.6-luna, 1M) — that window is the real limit. Text-only
|
|
790
833
|
* turns keep the session model's (typically much larger) window.
|
|
791
834
|
*/
|
|
792
835
|
private _effectiveTurnContextWindow;
|
|
@@ -849,6 +892,7 @@ export declare class AgentSession {
|
|
|
849
892
|
*/
|
|
850
893
|
private _summarizationRetryCallbacks;
|
|
851
894
|
private _ejectStickySafetyModelIfNeeded;
|
|
895
|
+
private _maybeRotateModelRoutes;
|
|
852
896
|
private _maybeFailoverFromSafetyStop;
|
|
853
897
|
private _prepareRetry;
|
|
854
898
|
/**
|