happy-imou-cloud 2.1.37 → 2.1.39
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/{BaseReasoningProcessor-Do2r_eVW.cjs → BaseReasoningProcessor-BUTolvO5.cjs} +2 -2
- package/dist/{BaseReasoningProcessor-CotgApeZ.mjs → BaseReasoningProcessor-Cbp6sIDm.mjs} +2 -2
- package/dist/{ProviderSelectionHandler-CywTx_Df.cjs → ProviderSelectionHandler-B22eXuym.cjs} +2 -2
- package/dist/{ProviderSelectionHandler-CCsorkyV.mjs → ProviderSelectionHandler-DrSgStLw.mjs} +2 -2
- package/dist/{api-CexMNqai.cjs → api-BoeZDGwx.cjs} +121 -1
- package/dist/{api-CMJhY7of.mjs → api-wcqkneTg.mjs} +121 -2
- package/dist/{command-Ct7Eeo2F.cjs → command-CkYq_KwA.cjs} +2 -2
- package/dist/{command-C2YB2hE-.mjs → command-DcgK0y3F.mjs} +2 -2
- package/dist/{index-4t8rMnvz.mjs → index-B9mt95QV.mjs} +201 -39
- package/dist/{index-CQ2Yq72y.cjs → index-Cgor8CE7.cjs} +204 -42
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +94 -36
- package/dist/lib.d.mts +94 -36
- package/dist/lib.mjs +1 -1
- package/dist/{registerKillSessionHandler-CLFQ8bQP.mjs → registerKillSessionHandler-Buc97BEh.mjs} +246 -10
- package/dist/{registerKillSessionHandler-C1PIogKI.cjs → registerKillSessionHandler-DtXhn2Cd.cjs} +249 -9
- package/dist/{runClaude-BiFuU4AP.mjs → runClaude-BYKNCDEU.mjs} +58 -20
- package/dist/{runClaude-L4G4BbIJ.cjs → runClaude-CwXQwmgw.cjs} +58 -20
- package/dist/{runCodex-CaUoS6E4.cjs → runCodex-BkB_YKhV.cjs} +58 -10
- package/dist/{runCodex-C0wjgp2b.mjs → runCodex-DqAddhDE.mjs} +58 -10
- package/dist/{runGemini-DxQX5VhV.mjs → runGemini-3jkfOtlr.mjs} +79 -11
- package/dist/{runGemini-DhYi_crP.cjs → runGemini-B4uXPrue.cjs} +79 -11
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
|
|
2
|
-
import { l as logger, m as encodeBase64, c as configuration, n as readCredentials, o as ensureSigningCredentials, r as readSettings, u as updateSettings, q as encodeBase64Url, j as delay, t as buildClientHeaders, v as decodeBase64, w as writeCredentialsLegacy, x as writeCredentialsDataKey, y as readDaemonState, z as HAPPY_CLOUD_DAEMON_PORT, B as clearDaemonState, C as packageJson, i as isAuthenticationRequiredError, D as acquireDaemonLock, E as writeDaemonState, A as ApiClient, F as releaseDaemonLock, G as validateProfileForAgent, I as getProfileEnvironmentVariables, J as clearCredentials, K as clearMachineId, L as readHappyOrgDispatchTruthSnapshot, M as processHappyOrgRepoRequests, N as
|
|
2
|
+
import { l as logger, m as encodeBase64, c as configuration, n as readCredentials, o as ensureSigningCredentials, r as readSettings, u as updateSettings, q as encodeBase64Url, j as delay, t as buildClientHeaders, v as decodeBase64, w as writeCredentialsLegacy, x as writeCredentialsDataKey, y as readDaemonState, z as HAPPY_CLOUD_DAEMON_PORT, B as clearDaemonState, C as packageJson, i as isAuthenticationRequiredError, D as acquireDaemonLock, E as writeDaemonState, A as ApiClient, F as releaseDaemonLock, G as validateProfileForAgent, I as getProfileEnvironmentVariables, J as clearCredentials, K as clearMachineId, L as readHappyOrgDispatchTruthSnapshot, M as processHappyOrgRepoRequests, N as readHappyOrgRepoTaskBoard, O as HappyOrgTurnReportSchema, P as recordHappyOrgTurnReport, Q as MessageContentSchema, R as buildSocketAuth, S as encrypt, H as HeadTailPreviewBuffer, T as getLatestDaemonLog } from './api-wcqkneTg.mjs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import fs, { writeFile as writeFile$1, rename, unlink as unlink$1 } from 'fs/promises';
|
|
5
5
|
import os$1, { homedir } from 'os';
|
|
@@ -2520,6 +2520,10 @@ function normalizePathKey(targetPath) {
|
|
|
2520
2520
|
const normalizedPath = normalize(resolve$1(targetPath));
|
|
2521
2521
|
return process.platform === "win32" ? normalizedPath.toLowerCase() : normalizedPath;
|
|
2522
2522
|
}
|
|
2523
|
+
function normalizeTextKey(target) {
|
|
2524
|
+
const normalized = target?.trim().toLowerCase();
|
|
2525
|
+
return normalized ? normalized : null;
|
|
2526
|
+
}
|
|
2523
2527
|
function readTextIfExists(targetPath) {
|
|
2524
2528
|
if (!pathExists(targetPath)) {
|
|
2525
2529
|
return null;
|
|
@@ -2539,18 +2543,44 @@ function isLocalRepoHappyOrgRoot(rootPath) {
|
|
|
2539
2543
|
function isHappyOrgRoot(rootPath) {
|
|
2540
2544
|
return isLegacyHappyOrgRoot(rootPath) || isLocalRepoHappyOrgRoot(rootPath);
|
|
2541
2545
|
}
|
|
2542
|
-
function
|
|
2546
|
+
function isCeoHomeContentsPath(homePath) {
|
|
2543
2547
|
return pathExists(join(homePath, "IDENTITY.md")) || pathExists(join(homePath, "AGENT.md"));
|
|
2544
2548
|
}
|
|
2549
|
+
function inferHomeSource(homePath) {
|
|
2550
|
+
const parentDirName = dirname$1(resolve$1(homePath)).split(/[\\/]/).pop()?.toLowerCase();
|
|
2551
|
+
if (parentDirName === "positions") {
|
|
2552
|
+
return "position-home";
|
|
2553
|
+
}
|
|
2554
|
+
if (parentDirName === "agents") {
|
|
2555
|
+
return "legacy-agent-home";
|
|
2556
|
+
}
|
|
2557
|
+
return null;
|
|
2558
|
+
}
|
|
2559
|
+
function isCeoHomePath(homePath) {
|
|
2560
|
+
const resolvedHomePath = resolve$1(homePath);
|
|
2561
|
+
const homeDirName = resolvedHomePath.split(/[\\/]/).pop()?.toLowerCase();
|
|
2562
|
+
const source = inferHomeSource(resolvedHomePath);
|
|
2563
|
+
return homeDirName === "ceo" && source !== null && isCeoHomeContentsPath(resolvedHomePath);
|
|
2564
|
+
}
|
|
2565
|
+
function findExpectedHomePath(startPath) {
|
|
2566
|
+
let currentPath = resolve$1(startPath);
|
|
2567
|
+
while (true) {
|
|
2568
|
+
if (isCeoHomePath(currentPath)) {
|
|
2569
|
+
return currentPath;
|
|
2570
|
+
}
|
|
2571
|
+
const parentPath = dirname$1(currentPath);
|
|
2572
|
+
if (parentPath === currentPath) {
|
|
2573
|
+
return null;
|
|
2574
|
+
}
|
|
2575
|
+
currentPath = parentPath;
|
|
2576
|
+
}
|
|
2577
|
+
}
|
|
2545
2578
|
function deriveOrganizationRootFromHomePath(homePath) {
|
|
2546
2579
|
const resolvedHomePath = resolve$1(homePath);
|
|
2547
|
-
|
|
2548
|
-
const parentPath = dirname$1(resolvedHomePath);
|
|
2549
|
-
const parentDirName = parentPath.split(/[\\/]/).pop()?.toLowerCase();
|
|
2550
|
-
if (homeDirName !== "ceo" || parentDirName !== "positions" && parentDirName !== "agents" || !isCeoHomePath(resolvedHomePath)) {
|
|
2580
|
+
if (!isCeoHomePath(resolvedHomePath)) {
|
|
2551
2581
|
return null;
|
|
2552
2582
|
}
|
|
2553
|
-
return dirname$1(
|
|
2583
|
+
return dirname$1(dirname$1(resolvedHomePath));
|
|
2554
2584
|
}
|
|
2555
2585
|
function collectCandidateRoots(startPath) {
|
|
2556
2586
|
const candidates = /* @__PURE__ */ new Map();
|
|
@@ -2622,6 +2652,17 @@ function extractHeading(markdown) {
|
|
|
2622
2652
|
function resolveDisplayName(identityMarkdown, agentMarkdown) {
|
|
2623
2653
|
return extractIdentityField(identityMarkdown, "display_name") || extractHeading(agentMarkdown) || "Happy CEO";
|
|
2624
2654
|
}
|
|
2655
|
+
function readHomeIdentity(homePath, source) {
|
|
2656
|
+
const identityMarkdown = readTextIfExists(join(homePath, "IDENTITY.md"));
|
|
2657
|
+
const agentMarkdown = readTextIfExists(join(homePath, "AGENT.md"));
|
|
2658
|
+
return {
|
|
2659
|
+
homePath: resolve$1(homePath),
|
|
2660
|
+
agentId: extractIdentityField(identityMarkdown, "agent_id"),
|
|
2661
|
+
role: extractIdentityField(identityMarkdown, "role") || "ceo",
|
|
2662
|
+
displayName: resolveDisplayName(identityMarkdown, agentMarkdown),
|
|
2663
|
+
source: source ?? inferHomeSource(homePath)
|
|
2664
|
+
};
|
|
2665
|
+
}
|
|
2625
2666
|
function buildIdentityPrompt(opts) {
|
|
2626
2667
|
const identityMarkdown = readTextIfExists(join(opts.homePath, "IDENTITY.md"));
|
|
2627
2668
|
const homeSections = HOME_DOC_FILENAMES.map((fileName) => readHomeDocSection(opts.homePath, fileName)).filter((value) => Boolean(value));
|
|
@@ -2643,45 +2684,117 @@ function buildIdentityPrompt(opts) {
|
|
|
2643
2684
|
"[/HAPPY_LOCAL_HOME_STARTUP]"
|
|
2644
2685
|
].join("\n");
|
|
2645
2686
|
}
|
|
2687
|
+
function buildStartupBinding(params) {
|
|
2688
|
+
const resolvedIdentity = params.resolved;
|
|
2689
|
+
const resolvedHomePath = resolvedIdentity?.homePath ?? null;
|
|
2690
|
+
const resolvedSource = resolvedIdentity?.source ?? null;
|
|
2691
|
+
const displayName = params.startupBindingStatus === "valid" ? resolvedIdentity?.displayName ?? params.expected.displayName : params.expected.displayName;
|
|
2692
|
+
return {
|
|
2693
|
+
organizationRootPath: params.organizationRootPath,
|
|
2694
|
+
homePath: params.expected.homePath,
|
|
2695
|
+
role: "ceo",
|
|
2696
|
+
displayName,
|
|
2697
|
+
source: resolvedSource ?? params.expected.source,
|
|
2698
|
+
identityPrompt: params.startupBindingStatus === "valid" && params.organizationRootPath && resolvedHomePath && resolvedSource ? buildIdentityPrompt({
|
|
2699
|
+
organizationRootPath: params.organizationRootPath,
|
|
2700
|
+
homePath: resolvedHomePath,
|
|
2701
|
+
displayName,
|
|
2702
|
+
source: resolvedSource
|
|
2703
|
+
}) : null,
|
|
2704
|
+
expectedHomePath: params.expected.homePath,
|
|
2705
|
+
resolvedHomePath,
|
|
2706
|
+
expectedHomeAgentId: params.expected.agentId,
|
|
2707
|
+
resolvedHomeAgentId: resolvedIdentity?.agentId ?? null,
|
|
2708
|
+
expectedHomeRole: params.expected.role,
|
|
2709
|
+
resolvedHomeRole: resolvedIdentity?.role ?? null,
|
|
2710
|
+
startupBindingStatus: params.startupBindingStatus,
|
|
2711
|
+
startupBindingFailureReason: params.startupBindingFailureReason
|
|
2712
|
+
};
|
|
2713
|
+
}
|
|
2646
2714
|
function resolveHappyOrgStartupBinding(startPath) {
|
|
2647
|
-
const
|
|
2648
|
-
if (
|
|
2715
|
+
const expectedHomePath = findExpectedHomePath(startPath);
|
|
2716
|
+
if (!expectedHomePath) {
|
|
2649
2717
|
return null;
|
|
2650
2718
|
}
|
|
2719
|
+
const expected = readHomeIdentity(expectedHomePath);
|
|
2720
|
+
const candidateRoots = collectCandidateRoots(expectedHomePath);
|
|
2721
|
+
if (candidateRoots.length !== 1) {
|
|
2722
|
+
return buildStartupBinding({
|
|
2723
|
+
expected,
|
|
2724
|
+
organizationRootPath: null,
|
|
2725
|
+
resolved: null,
|
|
2726
|
+
startupBindingStatus: "invalid",
|
|
2727
|
+
startupBindingFailureReason: "startup_binding_invalid"
|
|
2728
|
+
});
|
|
2729
|
+
}
|
|
2651
2730
|
const organizationRootPath = candidateRoots[0];
|
|
2652
|
-
const
|
|
2653
|
-
if (!
|
|
2654
|
-
return
|
|
2731
|
+
const resolvedHome = resolveHomeFromRoot(organizationRootPath);
|
|
2732
|
+
if (!resolvedHome) {
|
|
2733
|
+
return buildStartupBinding({
|
|
2734
|
+
expected,
|
|
2735
|
+
organizationRootPath,
|
|
2736
|
+
resolved: null,
|
|
2737
|
+
startupBindingStatus: "invalid",
|
|
2738
|
+
startupBindingFailureReason: "startup_binding_invalid"
|
|
2739
|
+
});
|
|
2655
2740
|
}
|
|
2656
|
-
const
|
|
2657
|
-
const
|
|
2658
|
-
const
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
displayName,
|
|
2664
|
-
source: home.source,
|
|
2665
|
-
identityPrompt: buildIdentityPrompt({
|
|
2741
|
+
const resolved = readHomeIdentity(resolvedHome.homePath, resolvedHome.source);
|
|
2742
|
+
const pathMismatch = normalizePathKey(expected.homePath) !== normalizePathKey(resolved.homePath);
|
|
2743
|
+
const roleMismatch = normalizeTextKey(expected.role) !== normalizeTextKey(resolved.role);
|
|
2744
|
+
const agentMismatch = normalizeTextKey(expected.agentId) !== normalizeTextKey(resolved.agentId);
|
|
2745
|
+
if (pathMismatch) {
|
|
2746
|
+
return buildStartupBinding({
|
|
2747
|
+
expected,
|
|
2666
2748
|
organizationRootPath,
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
})
|
|
2671
|
-
}
|
|
2749
|
+
resolved,
|
|
2750
|
+
startupBindingStatus: "invalid",
|
|
2751
|
+
startupBindingFailureReason: "startup_home_mismatch"
|
|
2752
|
+
});
|
|
2753
|
+
}
|
|
2754
|
+
if (roleMismatch || agentMismatch || resolved.source === null) {
|
|
2755
|
+
return buildStartupBinding({
|
|
2756
|
+
expected,
|
|
2757
|
+
organizationRootPath,
|
|
2758
|
+
resolved,
|
|
2759
|
+
startupBindingStatus: "invalid",
|
|
2760
|
+
startupBindingFailureReason: "startup_binding_invalid"
|
|
2761
|
+
});
|
|
2762
|
+
}
|
|
2763
|
+
return buildStartupBinding({
|
|
2764
|
+
expected,
|
|
2765
|
+
organizationRootPath,
|
|
2766
|
+
resolved,
|
|
2767
|
+
startupBindingStatus: "valid",
|
|
2768
|
+
startupBindingFailureReason: null
|
|
2769
|
+
});
|
|
2672
2770
|
}
|
|
2673
2771
|
|
|
2772
|
+
function toHappyOrgStartupBindingMetadata(binding) {
|
|
2773
|
+
return {
|
|
2774
|
+
organizationRootPath: binding.organizationRootPath ?? null,
|
|
2775
|
+
source: binding.source ?? null,
|
|
2776
|
+
expectedHomePath: binding.expectedHomePath,
|
|
2777
|
+
resolvedHomePath: binding.resolvedHomePath ?? null,
|
|
2778
|
+
expectedHomeAgentId: binding.expectedHomeAgentId ?? null,
|
|
2779
|
+
resolvedHomeAgentId: binding.resolvedHomeAgentId ?? null,
|
|
2780
|
+
expectedHomeRole: binding.expectedHomeRole ?? null,
|
|
2781
|
+
resolvedHomeRole: binding.resolvedHomeRole ?? null,
|
|
2782
|
+
startupBindingStatus: binding.startupBindingStatus,
|
|
2783
|
+
startupBindingFailureReason: binding.startupBindingFailureReason ?? null
|
|
2784
|
+
};
|
|
2785
|
+
}
|
|
2674
2786
|
function createSessionMetadata(opts) {
|
|
2675
2787
|
const state = {
|
|
2676
2788
|
controlledByUser: false
|
|
2677
2789
|
};
|
|
2678
2790
|
const requestedMetadataPath = opts.path ?? process.cwd();
|
|
2679
2791
|
const happyOrgStartupBinding = resolveHappyOrgStartupBinding(requestedMetadataPath);
|
|
2680
|
-
const
|
|
2792
|
+
const hasValidStartupBinding = happyOrgStartupBinding?.startupBindingStatus === "valid";
|
|
2793
|
+
const metadataPath = hasValidStartupBinding ? happyOrgStartupBinding?.resolvedHomePath ?? requestedMetadataPath : requestedMetadataPath;
|
|
2681
2794
|
const metadataHostPid = opts.hostPid === void 0 ? process.pid : opts.hostPid;
|
|
2682
2795
|
const metadata = {
|
|
2683
2796
|
path: metadataPath,
|
|
2684
|
-
...happyOrgStartupBinding?.displayName ? { name: happyOrgStartupBinding.displayName } : {},
|
|
2797
|
+
...hasValidStartupBinding && happyOrgStartupBinding?.displayName ? { name: happyOrgStartupBinding.displayName } : {},
|
|
2685
2798
|
host: os.hostname(),
|
|
2686
2799
|
version: packageJson.version,
|
|
2687
2800
|
os: os.platform(),
|
|
@@ -2696,7 +2809,12 @@ function createSessionMetadata(opts) {
|
|
|
2696
2809
|
lifecycleState: "running",
|
|
2697
2810
|
lifecycleStateSince: Date.now(),
|
|
2698
2811
|
flavor: opts.flavor,
|
|
2699
|
-
...metadataHostPid == null ? {} : { hostPid: metadataHostPid }
|
|
2812
|
+
...metadataHostPid == null ? {} : { hostPid: metadataHostPid },
|
|
2813
|
+
...happyOrgStartupBinding ? {
|
|
2814
|
+
happyOrg: {
|
|
2815
|
+
startupBinding: toHappyOrgStartupBindingMetadata(happyOrgStartupBinding)
|
|
2816
|
+
}
|
|
2817
|
+
} : {}
|
|
2700
2818
|
};
|
|
2701
2819
|
return {
|
|
2702
2820
|
state,
|
|
@@ -5128,13 +5246,13 @@ function resolveMemberAgent(agents, opts) {
|
|
|
5128
5246
|
}
|
|
5129
5247
|
const memberName = normalizeRef(opts.memberName);
|
|
5130
5248
|
if (memberName) {
|
|
5131
|
-
throw new Error("Dispatch send
|
|
5249
|
+
throw new Error("Dispatch send rejected (forbidden_local_only_fallback): --member-name local-only fallback is disabled; use --member-id or truth-resolvable --position-id/--responsibility-id instead");
|
|
5132
5250
|
}
|
|
5133
5251
|
const scope = normalizeRef(opts.scope);
|
|
5134
5252
|
if (!scope) {
|
|
5135
5253
|
throw new Error("Dispatch send requires --scope and formal truth via --member-id or truth-resolvable --position-id/--responsibility-id");
|
|
5136
5254
|
}
|
|
5137
|
-
throw new Error(`Dispatch send
|
|
5255
|
+
throw new Error(`Dispatch send rejected (forbidden_local_only_fallback): scope-only fallback is disabled for exact-target routing; provide --member-id or truth-resolvable --position-id/--responsibility-id instead of relying on --scope ${opts.scope}.`);
|
|
5138
5256
|
}
|
|
5139
5257
|
function findAgentById(agents, agentId) {
|
|
5140
5258
|
const normalizedAgentId = normalizeRef(agentId);
|
|
@@ -5182,7 +5300,7 @@ async function resolveFormalDispatchTarget(params) {
|
|
|
5182
5300
|
const truthMember = findAgentById(params.agents, truthMemberAgentId);
|
|
5183
5301
|
const dispatchMember = requestedMember ?? truthMember;
|
|
5184
5302
|
if (!dispatchMember) {
|
|
5185
|
-
throw new Error("Dispatch send requires --member-id or truth-resolvable --position-id/--responsibility-id; scope/name/role fallback
|
|
5303
|
+
throw new Error("Dispatch send rejected (forbidden_local_only_fallback): exact-target routing requires --member-id or truth-resolvable --position-id/--responsibility-id; scope/name/role fallback remains hint-only.");
|
|
5186
5304
|
}
|
|
5187
5305
|
if (dispatchMember.isRoot) {
|
|
5188
5306
|
throw new Error(`Member ${dispatchMember.id} is the CEO/root agent and cannot receive specialist dispatch notices`);
|
|
@@ -5259,6 +5377,30 @@ function formatDispatchReceipt(receipt) {
|
|
|
5259
5377
|
];
|
|
5260
5378
|
return lines.join("\n");
|
|
5261
5379
|
}
|
|
5380
|
+
function formatRepoTaskBoard(view) {
|
|
5381
|
+
const lines = [
|
|
5382
|
+
`total_count=${view.totalCount}`,
|
|
5383
|
+
`in_progress_count=${view.inProgressCount}`,
|
|
5384
|
+
`needs_handoff_count=${view.handoffCount}`,
|
|
5385
|
+
`awaiting_acceptance_count=${view.acceptanceCount}`,
|
|
5386
|
+
`closed_count=${view.closedCount}`,
|
|
5387
|
+
`last_updated_at=${view.lastUpdatedAt ?? ""}`
|
|
5388
|
+
];
|
|
5389
|
+
for (const section of view.sections) {
|
|
5390
|
+
lines.push("", `section=${section.key}`, `count=${section.count}`);
|
|
5391
|
+
for (const item of section.items) {
|
|
5392
|
+
lines.push([
|
|
5393
|
+
`task_id=${item.taskId}`,
|
|
5394
|
+
`status=${item.status}`,
|
|
5395
|
+
`title=${item.title}`,
|
|
5396
|
+
`owner=${item.ownerName}`,
|
|
5397
|
+
`responsibility=${item.responsibilityLabel ?? ""}`,
|
|
5398
|
+
`detail=${item.blockerOrDecision ?? item.latestResult ?? item.currentProgress ?? item.path ?? ""}`
|
|
5399
|
+
].join(" | "));
|
|
5400
|
+
}
|
|
5401
|
+
}
|
|
5402
|
+
return lines.join("\n");
|
|
5403
|
+
}
|
|
5262
5404
|
async function resolveOrganizationId(api, explicitOrganizationId) {
|
|
5263
5405
|
if (explicitOrganizationId) {
|
|
5264
5406
|
return {
|
|
@@ -5281,6 +5423,7 @@ ${chalk.bold("Usage:")}
|
|
|
5281
5423
|
hicloud happy-org dispatch send --task-id <task> --scope <scope> [--member-id <id>] --allowed-paths <csv> [--forbidden-paths <csv>] [--position-id <id>] [--responsibility-id <id>] [--organization-root <path>] [--validation-mode shadow|hard] [--organization-id <id>] [--note <text>] [--wait-seconds <n>] [--json]
|
|
5282
5424
|
hicloud happy-org dispatch receipt <dispatch-id> [--organization-id <id>] [--json]
|
|
5283
5425
|
hicloud happy-org repo process --root <path> [--request-id <id>] [--json]
|
|
5426
|
+
hicloud happy-org repo task-board --root <path> [--json]
|
|
5284
5427
|
hicloud happy-org repo turn-report --root <path> --report-json <json> [--json]
|
|
5285
5428
|
|
|
5286
5429
|
${chalk.bold("Examples:")}
|
|
@@ -5288,6 +5431,7 @@ ${chalk.bold("Examples:")}
|
|
|
5288
5431
|
hicloud happy-org dispatch send --scope cli-agent --task-id CLI-1.7.7-001 --position-id position-cli --organization-root ./happy-org/acme --allowed-paths happy/packages/happy-cli/**
|
|
5289
5432
|
hicloud happy-org dispatch receipt dispatch-abc123 --json
|
|
5290
5433
|
hicloud happy-org repo process --root ./happy-org/acme --json
|
|
5434
|
+
hicloud happy-org repo task-board --root ./happy-org/acme --json
|
|
5291
5435
|
`);
|
|
5292
5436
|
}
|
|
5293
5437
|
async function requireApi(deps) {
|
|
@@ -5473,6 +5617,20 @@ async function handleRepoProcessCommand(parsed, deps) {
|
|
|
5473
5617
|
].join("\n"));
|
|
5474
5618
|
});
|
|
5475
5619
|
}
|
|
5620
|
+
async function handleRepoTaskBoardCommand(parsed, deps) {
|
|
5621
|
+
const logger = deps.logger ?? console;
|
|
5622
|
+
const rootPath = readSingleValue(parsed, "root");
|
|
5623
|
+
if (!rootPath) {
|
|
5624
|
+
throw new Error("Repo task-board requires --root");
|
|
5625
|
+
}
|
|
5626
|
+
const reader = deps.readRepoTaskBoard ?? readHappyOrgRepoTaskBoard;
|
|
5627
|
+
const board = await reader(rootPath);
|
|
5628
|
+
if (readBooleanFlag(parsed, "json")) {
|
|
5629
|
+
logger.log(JSON.stringify(board, null, 2));
|
|
5630
|
+
return;
|
|
5631
|
+
}
|
|
5632
|
+
logger.log(formatRepoTaskBoard(board));
|
|
5633
|
+
}
|
|
5476
5634
|
async function handleRepoTurnReportCommand(parsed, deps) {
|
|
5477
5635
|
const logger = deps.logger ?? console;
|
|
5478
5636
|
const rootPath = readSingleValue(parsed, "root");
|
|
@@ -5516,6 +5674,10 @@ async function handleRepoCommand(args, deps) {
|
|
|
5516
5674
|
await handleRepoProcessCommand(parsed, deps);
|
|
5517
5675
|
return;
|
|
5518
5676
|
}
|
|
5677
|
+
if (subcommand === "task-board") {
|
|
5678
|
+
await handleRepoTaskBoardCommand(parsed, deps);
|
|
5679
|
+
return;
|
|
5680
|
+
}
|
|
5519
5681
|
if (subcommand === "turn-report") {
|
|
5520
5682
|
await handleRepoTurnReportCommand(parsed, deps);
|
|
5521
5683
|
return;
|
|
@@ -11715,14 +11877,14 @@ var launch = /*#__PURE__*/Object.freeze({
|
|
|
11715
11877
|
const unifiedProviderExecutors = {
|
|
11716
11878
|
claude: async (opts) => {
|
|
11717
11879
|
const claudeOptions = opts.claudeOptions ?? {};
|
|
11718
|
-
const { runClaude } = await import('./runClaude-
|
|
11880
|
+
const { runClaude } = await import('./runClaude-BYKNCDEU.mjs');
|
|
11719
11881
|
await runClaude(opts.credentials, {
|
|
11720
11882
|
...claudeOptions,
|
|
11721
11883
|
startingMode: claudeOptions.startingMode ?? (claudeOptions.startedBy === "daemon" ? "remote" : void 0)
|
|
11722
11884
|
});
|
|
11723
11885
|
},
|
|
11724
11886
|
codex: async (opts) => {
|
|
11725
|
-
const { runCodex } = await import('./runCodex-
|
|
11887
|
+
const { runCodex } = await import('./runCodex-DqAddhDE.mjs');
|
|
11726
11888
|
await runCodex({
|
|
11727
11889
|
credentials: opts.credentials,
|
|
11728
11890
|
startedBy: opts.startedBy,
|
|
@@ -11731,7 +11893,7 @@ const unifiedProviderExecutors = {
|
|
|
11731
11893
|
});
|
|
11732
11894
|
},
|
|
11733
11895
|
gemini: async (opts) => {
|
|
11734
|
-
const { runGemini } = await import('./runGemini-
|
|
11896
|
+
const { runGemini } = await import('./runGemini-3jkfOtlr.mjs');
|
|
11735
11897
|
await runGemini({
|
|
11736
11898
|
credentials: opts.credentials,
|
|
11737
11899
|
startedBy: opts.startedBy
|
|
@@ -11814,7 +11976,7 @@ function shouldRunMainClaudeFlow(opts) {
|
|
|
11814
11976
|
return;
|
|
11815
11977
|
} else if (subcommand === "runtime") {
|
|
11816
11978
|
if (args[1] === "providers") {
|
|
11817
|
-
const { renderRuntimeProviders } = await import('./command-
|
|
11979
|
+
const { renderRuntimeProviders } = await import('./command-DcgK0y3F.mjs');
|
|
11818
11980
|
console.log(renderRuntimeProviders());
|
|
11819
11981
|
return;
|
|
11820
11982
|
}
|
|
@@ -12020,8 +12182,8 @@ function shouldRunMainClaudeFlow(opts) {
|
|
|
12020
12182
|
const projectId = args[3];
|
|
12021
12183
|
try {
|
|
12022
12184
|
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return config; });
|
|
12023
|
-
const { readCredentials: readCredentials2 } = await import('./api-
|
|
12024
|
-
const { ApiClient: ApiClient2 } = await import('./api-
|
|
12185
|
+
const { readCredentials: readCredentials2 } = await import('./api-wcqkneTg.mjs').then(function (n) { return n.U; });
|
|
12186
|
+
const { ApiClient: ApiClient2 } = await import('./api-wcqkneTg.mjs').then(function (n) { return n.V; });
|
|
12025
12187
|
let userEmail = void 0;
|
|
12026
12188
|
try {
|
|
12027
12189
|
const credentials = await readCredentials2();
|