hypercore-cli 1.1.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/LICENSE +21 -0
- package/README.md +110 -0
- package/dist/api-XGC7D5AW.js +162 -0
- package/dist/auth-DNQWYQKT.js +21 -0
- package/dist/background-2EGCAAQH.js +14 -0
- package/dist/backlog-Q2NZCLNY.js +24 -0
- package/dist/chunk-2CMSCWQW.js +162 -0
- package/dist/chunk-2LJ2DVEB.js +167 -0
- package/dist/chunk-3RPFCQKJ.js +288 -0
- package/dist/chunk-43OLRXM5.js +263 -0
- package/dist/chunk-4DVYJAJL.js +57 -0
- package/dist/chunk-6OL3GA3P.js +173 -0
- package/dist/chunk-AUHU7ALH.js +2023 -0
- package/dist/chunk-B6A2AKLN.js +139 -0
- package/dist/chunk-BE46C7JW.js +46 -0
- package/dist/chunk-CUVAUOXL.js +58 -0
- package/dist/chunk-GH7E2OJE.js +223 -0
- package/dist/chunk-GOOTEPBK.js +271 -0
- package/dist/chunk-GPPMJYSM.js +133 -0
- package/dist/chunk-GU2FZQ6A.js +69 -0
- package/dist/chunk-IOPKN5GD.js +190 -0
- package/dist/chunk-IXOIOGR5.js +1505 -0
- package/dist/chunk-KRPOPWGA.js +251 -0
- package/dist/chunk-MGLJ53QN.js +219 -0
- package/dist/chunk-MV4TTRYX.js +533 -0
- package/dist/chunk-OPZYEVYR.js +150 -0
- package/dist/chunk-QTSLP47C.js +166 -0
- package/dist/chunk-R3GPQC7I.js +393 -0
- package/dist/chunk-RKB2JOV2.js +43 -0
- package/dist/chunk-RNG3K465.js +80 -0
- package/dist/chunk-TGTYKBGC.js +86 -0
- package/dist/chunk-U5SGAIMM.js +681 -0
- package/dist/chunk-V5UHPPSY.js +140 -0
- package/dist/chunk-WHLVZCQY.js +245 -0
- package/dist/chunk-XDRCBMZZ.js +66 -0
- package/dist/chunk-XOS6HPEF.js +134 -0
- package/dist/chunk-ZSBHUGWR.js +262 -0
- package/dist/claude-NSQ442XD.js +12 -0
- package/dist/commands-CK3WFAGI.js +128 -0
- package/dist/commands-U63OEO5J.js +1044 -0
- package/dist/commands-ZE6GD3WC.js +232 -0
- package/dist/config-4EW42BSF.js +8 -0
- package/dist/config-loader-SXO674TF.js +24 -0
- package/dist/diagnose-AFW3ZTZ4.js +12 -0
- package/dist/display-IIUBEYWN.js +58 -0
- package/dist/extractor-QV53W2YJ.js +129 -0
- package/dist/history-WMSCHERZ.js +180 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +406 -0
- package/dist/instance-registry-YSIJXSO7.js +15 -0
- package/dist/keybindings-JAAMLH3G.js +15 -0
- package/dist/loader-WHNTZTLP.js +58 -0
- package/dist/network-MM6YWPGO.js +279 -0
- package/dist/notify-HPTALZDC.js +14 -0
- package/dist/openai-compat-UQWJXBEK.js +12 -0
- package/dist/permissions-JUKXMNDH.js +10 -0
- package/dist/prompt-QV45TXRL.js +166 -0
- package/dist/quality-ST7PPNFR.js +16 -0
- package/dist/repl-RT3AHL7M.js +3375 -0
- package/dist/roadmap-5OBEKROY.js +17 -0
- package/dist/server-PORT7OEG.js +57 -0
- package/dist/session-4VUNDWLH.js +21 -0
- package/dist/skills-V4A35XKG.js +175 -0
- package/dist/store-Y4LU5QTO.js +25 -0
- package/dist/team-HO7Z4SIM.js +385 -0
- package/dist/telemetry-6R4EIE6O.js +30 -0
- package/dist/test-runner-ZQH5Y6OJ.js +619 -0
- package/dist/theme-3SYJ3UQA.js +14 -0
- package/dist/upgrade-7TGI3SXO.js +83 -0
- package/dist/verify-JUDKTPKZ.js +14 -0
- package/dist/web/static/app.js +562 -0
- package/dist/web/static/index.html +132 -0
- package/dist/web/static/mirror.css +1001 -0
- package/dist/web/static/mirror.html +184 -0
- package/dist/web/static/mirror.js +1125 -0
- package/dist/web/static/onboard.css +302 -0
- package/dist/web/static/onboard.html +140 -0
- package/dist/web/static/onboard.js +260 -0
- package/dist/web/static/style.css +602 -0
- package/dist/web/static/workspace.css +1568 -0
- package/dist/web/static/workspace.html +408 -0
- package/dist/web/static/workspace.js +1683 -0
- package/dist/web-Z5HSCQHW.js +39 -0
- package/package.json +67 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import {
|
|
2
|
+
generateId,
|
|
3
|
+
generateJoinCode,
|
|
4
|
+
generateToken
|
|
5
|
+
} from "./chunk-XDRCBMZZ.js";
|
|
6
|
+
import {
|
|
7
|
+
HYPERCORE_DIR
|
|
8
|
+
} from "./chunk-V5UHPPSY.js";
|
|
9
|
+
|
|
10
|
+
// src/team/store.ts
|
|
11
|
+
import { readFile, writeFile, mkdir, readdir } from "fs/promises";
|
|
12
|
+
import { existsSync } from "fs";
|
|
13
|
+
import { join } from "path";
|
|
14
|
+
var TEAMS_DIR = join(HYPERCORE_DIR, "teams");
|
|
15
|
+
function teamDir(teamId) {
|
|
16
|
+
return join(TEAMS_DIR, teamId);
|
|
17
|
+
}
|
|
18
|
+
function configPath(teamId) {
|
|
19
|
+
return join(teamDir(teamId), "config.json");
|
|
20
|
+
}
|
|
21
|
+
function tasksPath(teamId) {
|
|
22
|
+
return join(teamDir(teamId), "tasks.json");
|
|
23
|
+
}
|
|
24
|
+
function runsDir(teamId) {
|
|
25
|
+
return join(teamDir(teamId), "runs");
|
|
26
|
+
}
|
|
27
|
+
function runPath(teamId, runId) {
|
|
28
|
+
return join(runsDir(teamId), `${runId}.json`);
|
|
29
|
+
}
|
|
30
|
+
async function readJSON(path) {
|
|
31
|
+
if (!existsSync(path)) return null;
|
|
32
|
+
try {
|
|
33
|
+
const data = await readFile(path, "utf-8");
|
|
34
|
+
return JSON.parse(data);
|
|
35
|
+
} catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function writeJSON(path, data) {
|
|
40
|
+
const dir = join(path, "..");
|
|
41
|
+
await mkdir(dir, { recursive: true });
|
|
42
|
+
await writeFile(path, JSON.stringify(data, null, 2), "utf-8");
|
|
43
|
+
}
|
|
44
|
+
async function createTeam(teamName, ownerName) {
|
|
45
|
+
const teamId = generateId();
|
|
46
|
+
const memberId = generateId();
|
|
47
|
+
const token = generateToken();
|
|
48
|
+
const owner = {
|
|
49
|
+
id: memberId,
|
|
50
|
+
name: ownerName,
|
|
51
|
+
role: "owner",
|
|
52
|
+
token,
|
|
53
|
+
joinedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
54
|
+
status: "online",
|
|
55
|
+
lastSeen: (/* @__PURE__ */ new Date()).toISOString()
|
|
56
|
+
};
|
|
57
|
+
const team = {
|
|
58
|
+
id: teamId,
|
|
59
|
+
name: teamName,
|
|
60
|
+
joinCode: generateJoinCode(),
|
|
61
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
62
|
+
owner: memberId,
|
|
63
|
+
members: [owner]
|
|
64
|
+
};
|
|
65
|
+
await writeJSON(configPath(teamId), team);
|
|
66
|
+
await writeJSON(tasksPath(teamId), []);
|
|
67
|
+
return { team, ownerToken: token };
|
|
68
|
+
}
|
|
69
|
+
async function loadTeam(teamId) {
|
|
70
|
+
return readJSON(configPath(teamId));
|
|
71
|
+
}
|
|
72
|
+
async function findTeamByJoinCode(code) {
|
|
73
|
+
if (!existsSync(TEAMS_DIR)) return null;
|
|
74
|
+
const dirs = await readdir(TEAMS_DIR);
|
|
75
|
+
for (const dir of dirs) {
|
|
76
|
+
const team = await readJSON(configPath(dir));
|
|
77
|
+
if (team && team.joinCode === code.toUpperCase()) return team;
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
async function saveTeam(team) {
|
|
82
|
+
await writeJSON(configPath(team.id), team);
|
|
83
|
+
}
|
|
84
|
+
async function addMember(teamId, memberName) {
|
|
85
|
+
const team = await loadTeam(teamId);
|
|
86
|
+
if (!team) return null;
|
|
87
|
+
if (team.members.some((m) => m.name === memberName)) {
|
|
88
|
+
memberName = `${memberName}_${team.members.length}`;
|
|
89
|
+
}
|
|
90
|
+
const member = {
|
|
91
|
+
id: generateId(),
|
|
92
|
+
name: memberName,
|
|
93
|
+
role: "member",
|
|
94
|
+
token: generateToken(),
|
|
95
|
+
joinedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
96
|
+
status: "online",
|
|
97
|
+
lastSeen: (/* @__PURE__ */ new Date()).toISOString()
|
|
98
|
+
};
|
|
99
|
+
team.members.push(member);
|
|
100
|
+
await saveTeam(team);
|
|
101
|
+
return { member, team };
|
|
102
|
+
}
|
|
103
|
+
async function updateMemberStatus(teamId, memberId, status) {
|
|
104
|
+
const team = await loadTeam(teamId);
|
|
105
|
+
if (!team) return;
|
|
106
|
+
const member = team.members.find((m) => m.id === memberId);
|
|
107
|
+
if (member) {
|
|
108
|
+
member.status = status;
|
|
109
|
+
member.lastSeen = (/* @__PURE__ */ new Date()).toISOString();
|
|
110
|
+
await saveTeam(team);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async function listTasks(teamId) {
|
|
114
|
+
return await readJSON(tasksPath(teamId)) || [];
|
|
115
|
+
}
|
|
116
|
+
async function addTask(teamId, task) {
|
|
117
|
+
const tasks = await listTasks(teamId);
|
|
118
|
+
const maxId = tasks.reduce((max, t) => Math.max(max, parseInt(t.id) || 0), 0);
|
|
119
|
+
const newTask = {
|
|
120
|
+
...task,
|
|
121
|
+
id: String(maxId + 1),
|
|
122
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
123
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
124
|
+
};
|
|
125
|
+
tasks.push(newTask);
|
|
126
|
+
await writeJSON(tasksPath(teamId), tasks);
|
|
127
|
+
return newTask;
|
|
128
|
+
}
|
|
129
|
+
async function updateTask(teamId, taskId, updates) {
|
|
130
|
+
const tasks = await listTasks(teamId);
|
|
131
|
+
const idx = tasks.findIndex((t) => t.id === taskId);
|
|
132
|
+
if (idx === -1) return null;
|
|
133
|
+
tasks[idx] = { ...tasks[idx], ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
|
|
134
|
+
await writeJSON(tasksPath(teamId), tasks);
|
|
135
|
+
return tasks[idx];
|
|
136
|
+
}
|
|
137
|
+
async function deleteTask(teamId, taskId) {
|
|
138
|
+
const tasks = await listTasks(teamId);
|
|
139
|
+
const filtered = tasks.filter((t) => t.id !== taskId);
|
|
140
|
+
if (filtered.length === tasks.length) return false;
|
|
141
|
+
await writeJSON(tasksPath(teamId), filtered);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
async function loadRun(teamId, runId) {
|
|
145
|
+
return readJSON(runPath(teamId, runId));
|
|
146
|
+
}
|
|
147
|
+
async function listRuns(teamId) {
|
|
148
|
+
const dir = runsDir(teamId);
|
|
149
|
+
if (!existsSync(dir)) return [];
|
|
150
|
+
const files = await readdir(dir);
|
|
151
|
+
const runs = [];
|
|
152
|
+
for (const file of files) {
|
|
153
|
+
if (file.endsWith(".json")) {
|
|
154
|
+
const run = await readJSON(join(dir, file));
|
|
155
|
+
if (run) runs.push(run);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return runs.sort((a, b) => b.startedAt.localeCompare(a.startedAt));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export {
|
|
162
|
+
createTeam,
|
|
163
|
+
loadTeam,
|
|
164
|
+
findTeamByJoinCode,
|
|
165
|
+
addMember,
|
|
166
|
+
updateMemberStatus,
|
|
167
|
+
listTasks,
|
|
168
|
+
addTask,
|
|
169
|
+
updateTask,
|
|
170
|
+
deleteTask,
|
|
171
|
+
loadRun,
|
|
172
|
+
listRuns
|
|
173
|
+
};
|