@nanocollective/roster 0.1.0-alpha.30 → 0.1.0-alpha.32
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/docs/cost.md
CHANGED
|
@@ -12,9 +12,9 @@ Three separate bills, and they behave differently.
|
|
|
12
12
|
|
|
13
13
|
The largest by far, and the one that scales with how much work you ask for.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
how Pip's staff run.
|
|
15
|
+
Roster needs access to a coding agent, not any one provider: Claude Code, Codex, Nanocoder or
|
|
16
|
+
your own. On a subscription plan it is a flat cost rather than spend per token, and what grows
|
|
17
|
+
with a session is how much of its usage you take. Pip's staff run that way.
|
|
18
18
|
|
|
19
19
|
A session's cost is roughly its length. Ours run 11 to 55 minutes of wall clock, and a longer
|
|
20
20
|
session is a bigger bill as well as a slower one. The lever that matters is not the model
|
package/package.json
CHANGED
|
@@ -361,7 +361,9 @@ function mdAsset(src, opts) {
|
|
|
361
361
|
return path ? "/api/file?path=" + encodeURIComponent(opts.file.staffDir + "/" + path) : src;
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
|
|
364
|
+
/* #123, repo#123 and owner/repo#123. The short repo form is how the staff write about the other
|
|
365
|
+
repos in their own org (pip-web#172), and it was left as plain text. */
|
|
366
|
+
const REF_RE = /(^|[\s(>])((?:[\w.-]+\/)?[\w.-]+)?#(\d+)\b/g;
|
|
365
367
|
// GitHub's own username shape, plus the short aliases the agents answer to.
|
|
366
368
|
const AT_RE = /(^|[\s(>])@([a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38})\b/gi;
|
|
367
369
|
|
|
@@ -381,7 +383,8 @@ export function chips(html, opts = {}) {
|
|
|
381
383
|
if (inA) return p;
|
|
382
384
|
return p
|
|
383
385
|
.replace(REF_RE, (m, pre, repo, n) => {
|
|
384
|
-
const
|
|
386
|
+
const owner = String(opts.repo ?? "").split("/")[0];
|
|
387
|
+
const target = !repo ? opts.repo : repo.includes("/") ? repo : owner ? owner + "/" + repo : "";
|
|
385
388
|
if (!target) return m;
|
|
386
389
|
// /issues/N redirects to /pull/N when it is a PR, so one form is always right.
|
|
387
390
|
return pre + '<a class="ref" href="https://github.com/' + target + "/issues/" + n +
|
|
@@ -240,7 +240,9 @@ function inboxScreen(m, opts) {
|
|
|
240
240
|
request; the inbox is everything else. An inbox that also listed the PRs said the same
|
|
241
241
|
thing twice and made the badge beside it a number you could not act on. */
|
|
242
242
|
const mine = S.inbox.items
|
|
243
|
-
|
|
243
|
+
/* A staff member's link is their tracker: what is in their repo, whoever filed it. Matching
|
|
244
|
+
on who filed or was named put an issue the CMO filed for the CTO under both of them. */
|
|
245
|
+
.filter((i) => (issuesOnly ? products.has(i.repo) : !whoseStaff || i.repo === whoseStaff.brain))
|
|
244
246
|
.filter((i) => (i.kind === "pr") === !!opts.prs);
|
|
245
247
|
const isOpen = (i) => i.state === "OPEN";
|
|
246
248
|
const scoped = mine.filter(
|