happy-imou-cloud 2.1.38 → 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-e3WcqGAZ.cjs → BaseReasoningProcessor-BUTolvO5.cjs} +2 -2
- package/dist/{BaseReasoningProcessor-wTpEeecw.mjs → BaseReasoningProcessor-Cbp6sIDm.mjs} +2 -2
- package/dist/{ProviderSelectionHandler-C9BjSS3M.cjs → ProviderSelectionHandler-B22eXuym.cjs} +2 -2
- package/dist/{ProviderSelectionHandler-HSpF64um.mjs → ProviderSelectionHandler-DrSgStLw.mjs} +2 -2
- package/dist/{api-CbDy385l.cjs → api-BoeZDGwx.cjs} +121 -1
- package/dist/{api-FwOO5yvL.mjs → api-wcqkneTg.mjs} +121 -2
- package/dist/{command-DIwit8GZ.cjs → command-CkYq_KwA.cjs} +2 -2
- package/dist/{command-D8dRpb8C.mjs → command-DcgK0y3F.mjs} +2 -2
- package/dist/{index-DxyhhizE.mjs → index-B9mt95QV.mjs} +201 -39
- package/dist/{index-B-RcfyFb.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 +58 -0
- package/dist/lib.d.mts +58 -0
- package/dist/lib.mjs +1 -1
- package/dist/{registerKillSessionHandler-BKUa-9cX.mjs → registerKillSessionHandler-Buc97BEh.mjs} +2 -2
- package/dist/{registerKillSessionHandler-CoYWZpXs.cjs → registerKillSessionHandler-DtXhn2Cd.cjs} +2 -2
- package/dist/{runClaude-CeuQr9rp.mjs → runClaude-BYKNCDEU.mjs} +4 -4
- package/dist/{runClaude-CUhIl2_Q.cjs → runClaude-CwXQwmgw.cjs} +4 -4
- package/dist/{runCodex-B56mNb9m.cjs → runCodex-BkB_YKhV.cjs} +5 -5
- package/dist/{runCodex-CKHSREhN.mjs → runCodex-DqAddhDE.mjs} +5 -5
- package/dist/{runGemini-CQIufP_l.mjs → runGemini-3jkfOtlr.mjs} +4 -4
- package/dist/{runGemini-DibV-eJ4.cjs → runGemini-B4uXPrue.cjs} +4 -4
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var persistence = require('./api-
|
|
3
|
+
var index = require('./index-Cgor8CE7.cjs');
|
|
4
|
+
var persistence = require('./api-BoeZDGwx.cjs');
|
|
5
5
|
var node_events = require('node:events');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as createSessionMetadata, p as publishSessionRegistration } from './index-
|
|
2
|
-
import { s as startOfflineReconnection, c as configuration, i as isAuthenticationRequiredError, l as logger } from './api-
|
|
1
|
+
import { a as createSessionMetadata, p as publishSessionRegistration } from './index-B9mt95QV.mjs';
|
|
2
|
+
import { s as startOfflineReconnection, c as configuration, i as isAuthenticationRequiredError, l as logger } from './api-wcqkneTg.mjs';
|
|
3
3
|
import { EventEmitter } from 'node:events';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
5
|
|
package/dist/{ProviderSelectionHandler-C9BjSS3M.cjs → ProviderSelectionHandler-B22eXuym.cjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var persistence = require('./api-
|
|
4
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
3
|
+
var persistence = require('./api-BoeZDGwx.cjs');
|
|
4
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-DtXhn2Cd.cjs');
|
|
5
5
|
|
|
6
6
|
async function runModeLoop(opts) {
|
|
7
7
|
let currentMode = opts.startingMode;
|
package/dist/{ProviderSelectionHandler-HSpF64um.mjs → ProviderSelectionHandler-DrSgStLw.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { l as logger } from './api-
|
|
2
|
-
import { g as getPendingInteractionTimeoutMs, I as INTERACTION_SUPERSEDED_ERROR, a as INTERACTION_TIMED_OUT_ERROR } from './registerKillSessionHandler-
|
|
1
|
+
import { l as logger } from './api-wcqkneTg.mjs';
|
|
2
|
+
import { g as getPendingInteractionTimeoutMs, I as INTERACTION_SUPERSEDED_ERROR, a as INTERACTION_TIMED_OUT_ERROR } from './registerKillSessionHandler-Buc97BEh.mjs';
|
|
3
3
|
|
|
4
4
|
async function runModeLoop(opts) {
|
|
5
5
|
let currentMode = opts.startingMode;
|
|
@@ -38,7 +38,7 @@ function _interopNamespaceDefault(e) {
|
|
|
38
38
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
39
39
|
|
|
40
40
|
var name = "happy-imou-cloud";
|
|
41
|
-
var version = "2.1.
|
|
41
|
+
var version = "2.1.39";
|
|
42
42
|
var description = "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI";
|
|
43
43
|
var author = "long.zhu";
|
|
44
44
|
var license = "MIT";
|
|
@@ -1318,6 +1318,26 @@ const HappyOrgSpecialistHomeIdentitySchema = z.z.object({
|
|
|
1318
1318
|
startedBy: z.z.enum(["daemon", "terminal"]).nullish(),
|
|
1319
1319
|
flavor: z.z.string().min(1).nullish()
|
|
1320
1320
|
});
|
|
1321
|
+
const HappyOrgStartupBindingStatusSchema = z.z.enum([
|
|
1322
|
+
"valid",
|
|
1323
|
+
"invalid"
|
|
1324
|
+
]);
|
|
1325
|
+
const HappyOrgStartupBindingFailureReasonSchema = z.z.enum([
|
|
1326
|
+
"startup_home_mismatch",
|
|
1327
|
+
"startup_binding_invalid"
|
|
1328
|
+
]);
|
|
1329
|
+
const HappyOrgStartupBindingSchema = z.z.object({
|
|
1330
|
+
organizationRootPath: z.z.string().min(1).nullish(),
|
|
1331
|
+
source: z.z.enum(["position-home", "legacy-agent-home"]).nullish(),
|
|
1332
|
+
expectedHomePath: z.z.string().min(1),
|
|
1333
|
+
resolvedHomePath: z.z.string().min(1).nullish(),
|
|
1334
|
+
expectedHomeAgentId: z.z.string().min(1).nullish(),
|
|
1335
|
+
resolvedHomeAgentId: z.z.string().min(1).nullish(),
|
|
1336
|
+
expectedHomeRole: z.z.string().min(1).nullish(),
|
|
1337
|
+
resolvedHomeRole: z.z.string().min(1).nullish(),
|
|
1338
|
+
startupBindingStatus: HappyOrgStartupBindingStatusSchema,
|
|
1339
|
+
startupBindingFailureReason: HappyOrgStartupBindingFailureReasonSchema.nullish()
|
|
1340
|
+
});
|
|
1321
1341
|
const HappyOrgMessageMetaSchema = z.z.object({
|
|
1322
1342
|
taskContext: HappyOrgTaskContextSchema.optional(),
|
|
1323
1343
|
control: HappyOrgTaskControlSchema.optional(),
|
|
@@ -1372,6 +1392,7 @@ z.z.object({
|
|
|
1372
1392
|
replyContext: HappyOrgReplyContextSchema.nullish(),
|
|
1373
1393
|
dispatchAcks: z.z.record(z.z.string(), HappyOrgDispatchAckLedgerEntrySchema).optional(),
|
|
1374
1394
|
specialistHome: HappyOrgSpecialistHomeIdentitySchema.nullish(),
|
|
1395
|
+
startupBinding: HappyOrgStartupBindingSchema.nullish(),
|
|
1375
1396
|
repeat: z.z.object({
|
|
1376
1397
|
threshold: z.z.number().int().positive(),
|
|
1377
1398
|
fingerprints: z.z.record(z.z.string(), HappyOrgRepeatEntrySchema)
|
|
@@ -1648,6 +1669,79 @@ const AgentMessageSchema = z.z.object({
|
|
|
1648
1669
|
});
|
|
1649
1670
|
const MessageContentSchema = z.z.union([UserMessageSchema, AgentMessageSchema]);
|
|
1650
1671
|
|
|
1672
|
+
function isNeedsHandoffTask(task) {
|
|
1673
|
+
if (task.status === "waiting_review" || task.status === "waiting_decision" || task.status === "blocked") {
|
|
1674
|
+
return true;
|
|
1675
|
+
}
|
|
1676
|
+
if (task.status !== "active") {
|
|
1677
|
+
return false;
|
|
1678
|
+
}
|
|
1679
|
+
if (task.hasActiveOwner === false) {
|
|
1680
|
+
return true;
|
|
1681
|
+
}
|
|
1682
|
+
if (task.activeOwnerAgentId && task.activeOwnerAgentId !== task.ownerAgentId) {
|
|
1683
|
+
return true;
|
|
1684
|
+
}
|
|
1685
|
+
return false;
|
|
1686
|
+
}
|
|
1687
|
+
function classifyHappyOrgTaskBoardSection(task) {
|
|
1688
|
+
if (task.status === "done") {
|
|
1689
|
+
return "closed";
|
|
1690
|
+
}
|
|
1691
|
+
if (task.status === "waiting_close") {
|
|
1692
|
+
return "awaiting_acceptance";
|
|
1693
|
+
}
|
|
1694
|
+
if (isNeedsHandoffTask(task)) {
|
|
1695
|
+
return "needs_handoff";
|
|
1696
|
+
}
|
|
1697
|
+
return "in_progress";
|
|
1698
|
+
}
|
|
1699
|
+
function buildHappyOrgTaskBoardView(tasks) {
|
|
1700
|
+
const items = [...tasks].filter((task) => task.status !== "terminated").sort((left, right) => right.updatedAt - left.updatedAt || left.taskId.localeCompare(right.taskId)).map((task) => {
|
|
1701
|
+
const sectionKey = classifyHappyOrgTaskBoardSection(task);
|
|
1702
|
+
return {
|
|
1703
|
+
taskId: task.taskId,
|
|
1704
|
+
title: task.title,
|
|
1705
|
+
status: task.status,
|
|
1706
|
+
sectionKey,
|
|
1707
|
+
lane: sectionKey,
|
|
1708
|
+
ownerAgentId: task.ownerAgentId,
|
|
1709
|
+
ownerName: task.ownerName,
|
|
1710
|
+
responsibilityId: task.responsibilityId ?? null,
|
|
1711
|
+
responsibilityLabel: task.responsibilityLabel ?? null,
|
|
1712
|
+
currentProgress: task.summary || null,
|
|
1713
|
+
latestResult: task.reviewSummary || task.resultSummary || null,
|
|
1714
|
+
blockerOrDecision: task.blocker || task.decisionNeeded || task.adviceSummary || null,
|
|
1715
|
+
path: task.path || null,
|
|
1716
|
+
updatedAt: task.updatedAt
|
|
1717
|
+
};
|
|
1718
|
+
});
|
|
1719
|
+
const buckets = {
|
|
1720
|
+
in_progress: [],
|
|
1721
|
+
needs_handoff: [],
|
|
1722
|
+
awaiting_acceptance: [],
|
|
1723
|
+
closed: []
|
|
1724
|
+
};
|
|
1725
|
+
for (const item of items) {
|
|
1726
|
+
buckets[item.sectionKey].push(item);
|
|
1727
|
+
}
|
|
1728
|
+
const sections = [
|
|
1729
|
+
{ key: "in_progress", count: buckets.in_progress.length, items: buckets.in_progress },
|
|
1730
|
+
{ key: "needs_handoff", count: buckets.needs_handoff.length, items: buckets.needs_handoff },
|
|
1731
|
+
{ key: "awaiting_acceptance", count: buckets.awaiting_acceptance.length, items: buckets.awaiting_acceptance },
|
|
1732
|
+
{ key: "closed", count: buckets.closed.length, items: buckets.closed }
|
|
1733
|
+
];
|
|
1734
|
+
return {
|
|
1735
|
+
totalCount: items.length,
|
|
1736
|
+
inProgressCount: sections[0].count,
|
|
1737
|
+
handoffCount: sections[1].count,
|
|
1738
|
+
acceptanceCount: sections[2].count,
|
|
1739
|
+
closedCount: sections[3].count,
|
|
1740
|
+
lastUpdatedAt: items[0]?.updatedAt ?? null,
|
|
1741
|
+
sections
|
|
1742
|
+
};
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1651
1745
|
const HAPPY_ORG_LOCAL_REPO_SCHEMA_VERSION = "1.7.3-local-repo-v1";
|
|
1652
1746
|
const HAPPY_ORG_WRITER_LOCK_SCHEMA_VERSION = "1.7.3-writer-lock-v1";
|
|
1653
1747
|
const WRITER_LOCK_LEASE_DURATION_SECONDS = 900;
|
|
@@ -2195,6 +2289,31 @@ async function readHappyOrgDispatchTruthSnapshot(rootPath) {
|
|
|
2195
2289
|
responsibilities: normalizedResponsibilities
|
|
2196
2290
|
};
|
|
2197
2291
|
}
|
|
2292
|
+
async function readHappyOrgRepoTaskBoard(rootPath) {
|
|
2293
|
+
const [taskIds, positions, responsibilities] = await Promise.all([
|
|
2294
|
+
listTaskIds(rootPath),
|
|
2295
|
+
listPositionEnvelopes(rootPath),
|
|
2296
|
+
readResponsibilities(rootPath)
|
|
2297
|
+
]);
|
|
2298
|
+
const responsibilityLabelById = /* @__PURE__ */ new Map();
|
|
2299
|
+
for (const responsibility of responsibilities?.value ?? []) {
|
|
2300
|
+
responsibilityLabelById.set(responsibility.responsibilityId, responsibility.title);
|
|
2301
|
+
}
|
|
2302
|
+
for (const position of positions) {
|
|
2303
|
+
const fallbackResponsibilityId = position.value.responsibilityIds[0] ?? buildResponsibilityId(position.value.slug);
|
|
2304
|
+
if (!responsibilityLabelById.has(fallbackResponsibilityId)) {
|
|
2305
|
+
responsibilityLabelById.set(fallbackResponsibilityId, position.value.label || position.value.agentName || position.value.slug);
|
|
2306
|
+
}
|
|
2307
|
+
}
|
|
2308
|
+
const tasks = await Promise.all(taskIds.map(async (taskId) => {
|
|
2309
|
+
const bundle = await loadTaskEnvelope(rootPath, taskId);
|
|
2310
|
+
return bundle ? mergeTaskEnvelope(bundle) : null;
|
|
2311
|
+
}));
|
|
2312
|
+
return buildHappyOrgTaskBoardView(tasks.filter((task) => task !== null).map((task) => ({
|
|
2313
|
+
...task,
|
|
2314
|
+
responsibilityLabel: task.responsibilityLabel ?? (task.responsibilityId ? responsibilityLabelById.get(task.responsibilityId) ?? null : null)
|
|
2315
|
+
})));
|
|
2316
|
+
}
|
|
2198
2317
|
function mergeTaskEnvelope(taskBundle) {
|
|
2199
2318
|
const { task, workflow, result } = taskBundle;
|
|
2200
2319
|
return {
|
|
@@ -6732,6 +6851,7 @@ exports.processHappyOrgRepoRequests = processHappyOrgRepoRequests;
|
|
|
6732
6851
|
exports.readCredentials = readCredentials;
|
|
6733
6852
|
exports.readDaemonState = readDaemonState;
|
|
6734
6853
|
exports.readHappyOrgDispatchTruthSnapshot = readHappyOrgDispatchTruthSnapshot;
|
|
6854
|
+
exports.readHappyOrgRepoTaskBoard = readHappyOrgRepoTaskBoard;
|
|
6735
6855
|
exports.readSettings = readSettings;
|
|
6736
6856
|
exports.recordHappyOrgTurnReport = recordHappyOrgTurnReport;
|
|
6737
6857
|
exports.releaseDaemonLock = releaseDaemonLock;
|
|
@@ -18,7 +18,7 @@ import { spawn } from 'node:child_process';
|
|
|
18
18
|
import { Expo } from 'expo-server-sdk';
|
|
19
19
|
|
|
20
20
|
var name = "happy-imou-cloud";
|
|
21
|
-
var version = "2.1.
|
|
21
|
+
var version = "2.1.39";
|
|
22
22
|
var description = "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI";
|
|
23
23
|
var author = "long.zhu";
|
|
24
24
|
var license = "MIT";
|
|
@@ -1298,6 +1298,26 @@ const HappyOrgSpecialistHomeIdentitySchema = z$1.object({
|
|
|
1298
1298
|
startedBy: z$1.enum(["daemon", "terminal"]).nullish(),
|
|
1299
1299
|
flavor: z$1.string().min(1).nullish()
|
|
1300
1300
|
});
|
|
1301
|
+
const HappyOrgStartupBindingStatusSchema = z$1.enum([
|
|
1302
|
+
"valid",
|
|
1303
|
+
"invalid"
|
|
1304
|
+
]);
|
|
1305
|
+
const HappyOrgStartupBindingFailureReasonSchema = z$1.enum([
|
|
1306
|
+
"startup_home_mismatch",
|
|
1307
|
+
"startup_binding_invalid"
|
|
1308
|
+
]);
|
|
1309
|
+
const HappyOrgStartupBindingSchema = z$1.object({
|
|
1310
|
+
organizationRootPath: z$1.string().min(1).nullish(),
|
|
1311
|
+
source: z$1.enum(["position-home", "legacy-agent-home"]).nullish(),
|
|
1312
|
+
expectedHomePath: z$1.string().min(1),
|
|
1313
|
+
resolvedHomePath: z$1.string().min(1).nullish(),
|
|
1314
|
+
expectedHomeAgentId: z$1.string().min(1).nullish(),
|
|
1315
|
+
resolvedHomeAgentId: z$1.string().min(1).nullish(),
|
|
1316
|
+
expectedHomeRole: z$1.string().min(1).nullish(),
|
|
1317
|
+
resolvedHomeRole: z$1.string().min(1).nullish(),
|
|
1318
|
+
startupBindingStatus: HappyOrgStartupBindingStatusSchema,
|
|
1319
|
+
startupBindingFailureReason: HappyOrgStartupBindingFailureReasonSchema.nullish()
|
|
1320
|
+
});
|
|
1301
1321
|
const HappyOrgMessageMetaSchema = z$1.object({
|
|
1302
1322
|
taskContext: HappyOrgTaskContextSchema.optional(),
|
|
1303
1323
|
control: HappyOrgTaskControlSchema.optional(),
|
|
@@ -1352,6 +1372,7 @@ z$1.object({
|
|
|
1352
1372
|
replyContext: HappyOrgReplyContextSchema.nullish(),
|
|
1353
1373
|
dispatchAcks: z$1.record(z$1.string(), HappyOrgDispatchAckLedgerEntrySchema).optional(),
|
|
1354
1374
|
specialistHome: HappyOrgSpecialistHomeIdentitySchema.nullish(),
|
|
1375
|
+
startupBinding: HappyOrgStartupBindingSchema.nullish(),
|
|
1355
1376
|
repeat: z$1.object({
|
|
1356
1377
|
threshold: z$1.number().int().positive(),
|
|
1357
1378
|
fingerprints: z$1.record(z$1.string(), HappyOrgRepeatEntrySchema)
|
|
@@ -1628,6 +1649,79 @@ const AgentMessageSchema = z$1.object({
|
|
|
1628
1649
|
});
|
|
1629
1650
|
const MessageContentSchema = z$1.union([UserMessageSchema, AgentMessageSchema]);
|
|
1630
1651
|
|
|
1652
|
+
function isNeedsHandoffTask(task) {
|
|
1653
|
+
if (task.status === "waiting_review" || task.status === "waiting_decision" || task.status === "blocked") {
|
|
1654
|
+
return true;
|
|
1655
|
+
}
|
|
1656
|
+
if (task.status !== "active") {
|
|
1657
|
+
return false;
|
|
1658
|
+
}
|
|
1659
|
+
if (task.hasActiveOwner === false) {
|
|
1660
|
+
return true;
|
|
1661
|
+
}
|
|
1662
|
+
if (task.activeOwnerAgentId && task.activeOwnerAgentId !== task.ownerAgentId) {
|
|
1663
|
+
return true;
|
|
1664
|
+
}
|
|
1665
|
+
return false;
|
|
1666
|
+
}
|
|
1667
|
+
function classifyHappyOrgTaskBoardSection(task) {
|
|
1668
|
+
if (task.status === "done") {
|
|
1669
|
+
return "closed";
|
|
1670
|
+
}
|
|
1671
|
+
if (task.status === "waiting_close") {
|
|
1672
|
+
return "awaiting_acceptance";
|
|
1673
|
+
}
|
|
1674
|
+
if (isNeedsHandoffTask(task)) {
|
|
1675
|
+
return "needs_handoff";
|
|
1676
|
+
}
|
|
1677
|
+
return "in_progress";
|
|
1678
|
+
}
|
|
1679
|
+
function buildHappyOrgTaskBoardView(tasks) {
|
|
1680
|
+
const items = [...tasks].filter((task) => task.status !== "terminated").sort((left, right) => right.updatedAt - left.updatedAt || left.taskId.localeCompare(right.taskId)).map((task) => {
|
|
1681
|
+
const sectionKey = classifyHappyOrgTaskBoardSection(task);
|
|
1682
|
+
return {
|
|
1683
|
+
taskId: task.taskId,
|
|
1684
|
+
title: task.title,
|
|
1685
|
+
status: task.status,
|
|
1686
|
+
sectionKey,
|
|
1687
|
+
lane: sectionKey,
|
|
1688
|
+
ownerAgentId: task.ownerAgentId,
|
|
1689
|
+
ownerName: task.ownerName,
|
|
1690
|
+
responsibilityId: task.responsibilityId ?? null,
|
|
1691
|
+
responsibilityLabel: task.responsibilityLabel ?? null,
|
|
1692
|
+
currentProgress: task.summary || null,
|
|
1693
|
+
latestResult: task.reviewSummary || task.resultSummary || null,
|
|
1694
|
+
blockerOrDecision: task.blocker || task.decisionNeeded || task.adviceSummary || null,
|
|
1695
|
+
path: task.path || null,
|
|
1696
|
+
updatedAt: task.updatedAt
|
|
1697
|
+
};
|
|
1698
|
+
});
|
|
1699
|
+
const buckets = {
|
|
1700
|
+
in_progress: [],
|
|
1701
|
+
needs_handoff: [],
|
|
1702
|
+
awaiting_acceptance: [],
|
|
1703
|
+
closed: []
|
|
1704
|
+
};
|
|
1705
|
+
for (const item of items) {
|
|
1706
|
+
buckets[item.sectionKey].push(item);
|
|
1707
|
+
}
|
|
1708
|
+
const sections = [
|
|
1709
|
+
{ key: "in_progress", count: buckets.in_progress.length, items: buckets.in_progress },
|
|
1710
|
+
{ key: "needs_handoff", count: buckets.needs_handoff.length, items: buckets.needs_handoff },
|
|
1711
|
+
{ key: "awaiting_acceptance", count: buckets.awaiting_acceptance.length, items: buckets.awaiting_acceptance },
|
|
1712
|
+
{ key: "closed", count: buckets.closed.length, items: buckets.closed }
|
|
1713
|
+
];
|
|
1714
|
+
return {
|
|
1715
|
+
totalCount: items.length,
|
|
1716
|
+
inProgressCount: sections[0].count,
|
|
1717
|
+
handoffCount: sections[1].count,
|
|
1718
|
+
acceptanceCount: sections[2].count,
|
|
1719
|
+
closedCount: sections[3].count,
|
|
1720
|
+
lastUpdatedAt: items[0]?.updatedAt ?? null,
|
|
1721
|
+
sections
|
|
1722
|
+
};
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1631
1725
|
const HAPPY_ORG_LOCAL_REPO_SCHEMA_VERSION = "1.7.3-local-repo-v1";
|
|
1632
1726
|
const HAPPY_ORG_WRITER_LOCK_SCHEMA_VERSION = "1.7.3-writer-lock-v1";
|
|
1633
1727
|
const WRITER_LOCK_LEASE_DURATION_SECONDS = 900;
|
|
@@ -2175,6 +2269,31 @@ async function readHappyOrgDispatchTruthSnapshot(rootPath) {
|
|
|
2175
2269
|
responsibilities: normalizedResponsibilities
|
|
2176
2270
|
};
|
|
2177
2271
|
}
|
|
2272
|
+
async function readHappyOrgRepoTaskBoard(rootPath) {
|
|
2273
|
+
const [taskIds, positions, responsibilities] = await Promise.all([
|
|
2274
|
+
listTaskIds(rootPath),
|
|
2275
|
+
listPositionEnvelopes(rootPath),
|
|
2276
|
+
readResponsibilities(rootPath)
|
|
2277
|
+
]);
|
|
2278
|
+
const responsibilityLabelById = /* @__PURE__ */ new Map();
|
|
2279
|
+
for (const responsibility of responsibilities?.value ?? []) {
|
|
2280
|
+
responsibilityLabelById.set(responsibility.responsibilityId, responsibility.title);
|
|
2281
|
+
}
|
|
2282
|
+
for (const position of positions) {
|
|
2283
|
+
const fallbackResponsibilityId = position.value.responsibilityIds[0] ?? buildResponsibilityId(position.value.slug);
|
|
2284
|
+
if (!responsibilityLabelById.has(fallbackResponsibilityId)) {
|
|
2285
|
+
responsibilityLabelById.set(fallbackResponsibilityId, position.value.label || position.value.agentName || position.value.slug);
|
|
2286
|
+
}
|
|
2287
|
+
}
|
|
2288
|
+
const tasks = await Promise.all(taskIds.map(async (taskId) => {
|
|
2289
|
+
const bundle = await loadTaskEnvelope(rootPath, taskId);
|
|
2290
|
+
return bundle ? mergeTaskEnvelope(bundle) : null;
|
|
2291
|
+
}));
|
|
2292
|
+
return buildHappyOrgTaskBoardView(tasks.filter((task) => task !== null).map((task) => ({
|
|
2293
|
+
...task,
|
|
2294
|
+
responsibilityLabel: task.responsibilityLabel ?? (task.responsibilityId ? responsibilityLabelById.get(task.responsibilityId) ?? null : null)
|
|
2295
|
+
})));
|
|
2296
|
+
}
|
|
2178
2297
|
function mergeTaskEnvelope(taskBundle) {
|
|
2179
2298
|
const { task, workflow, result } = taskBundle;
|
|
2180
2299
|
return {
|
|
@@ -6674,4 +6793,4 @@ var api = /*#__PURE__*/Object.freeze({
|
|
|
6674
6793
|
ApiClient: ApiClient
|
|
6675
6794
|
});
|
|
6676
6795
|
|
|
6677
|
-
export { ApiClient as A, clearDaemonState as B, packageJson as C, acquireDaemonLock as D, writeDaemonState as E, releaseDaemonLock as F, validateProfileForAgent as G, HeadTailPreviewBuffer as H, getProfileEnvironmentVariables as I, clearCredentials as J, clearMachineId as K, readHappyOrgDispatchTruthSnapshot as L, processHappyOrgRepoRequests as M,
|
|
6796
|
+
export { ApiClient as A, clearDaemonState as B, packageJson as C, acquireDaemonLock as D, writeDaemonState as E, releaseDaemonLock as F, validateProfileForAgent as G, HeadTailPreviewBuffer as H, getProfileEnvironmentVariables as I, clearCredentials as J, clearMachineId as K, readHappyOrgDispatchTruthSnapshot as L, processHappyOrgRepoRequests as M, readHappyOrgRepoTaskBoard as N, HappyOrgTurnReportSchema as O, recordHappyOrgTurnReport as P, MessageContentSchema as Q, buildSocketAuth as R, encrypt as S, getLatestDaemonLog as T, persistence as U, api as V, ApiSessionClient as a, connectionState as b, configuration as c, HAPPY_ORG_REPLY_ACK_VERSION as d, HAPPY_ORG_TURN_REPORT_TAG as e, HAPPY_ORG_SUMMARY_MAX_LENGTH as f, HAPPY_ORG_REPEAT_THRESHOLD as g, backoff as h, isAuthenticationRequiredError as i, delay as j, AsyncLock as k, logger as l, encodeBase64 as m, readCredentials as n, ensureSigningCredentials as o, preserveSessionRuntimeMetadata as p, encodeBase64Url as q, readSettings as r, startOfflineReconnection as s, buildClientHeaders as t, updateSettings as u, decodeBase64 as v, writeCredentialsLegacy as w, writeCredentialsDataKey as x, readDaemonState as y, HAPPY_CLOUD_DAEMON_PORT as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createDefaultRuntimeShell } from './index-
|
|
1
|
+
import { c as createDefaultRuntimeShell } from './index-B9mt95QV.mjs';
|
|
2
2
|
import 'chalk';
|
|
3
|
-
import './api-
|
|
3
|
+
import './api-wcqkneTg.mjs';
|
|
4
4
|
import 'axios';
|
|
5
5
|
import 'fs';
|
|
6
6
|
import 'node:fs';
|