@floh-solutions/pharos-cli 0.24.0 → 0.26.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/README.md +97 -10
- package/dist/adopt-type.d.ts +58 -0
- package/dist/adopt-type.d.ts.map +1 -0
- package/dist/adopt-type.js +61 -0
- package/dist/adopt-type.js.map +1 -0
- package/dist/bridge.d.ts +156 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +157 -0
- package/dist/bridge.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +176 -31
- package/dist/cli.js.map +1 -1
- package/dist/commands/bridge.d.ts +30 -0
- package/dist/commands/bridge.d.ts.map +1 -0
- package/dist/commands/bridge.js +255 -0
- package/dist/commands/bridge.js.map +1 -0
- package/dist/commands/comment-github.d.ts +138 -0
- package/dist/commands/comment-github.d.ts.map +1 -0
- package/dist/commands/comment-github.js +427 -0
- package/dist/commands/comment-github.js.map +1 -0
- package/dist/commands/comment.d.ts.map +1 -1
- package/dist/commands/comment.js +114 -19
- package/dist/commands/comment.js.map +1 -1
- package/dist/commands/doctor.d.ts +169 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +241 -44
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/issue.d.ts +133 -0
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +292 -110
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/setup.d.ts +45 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +74 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/half-link.d.ts +14 -4
- package/dist/half-link.d.ts.map +1 -1
- package/dist/half-link.js +14 -4
- package/dist/half-link.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +123 -1
- package/dist/output.js.map +1 -1
- package/dist/session.d.ts +51 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +62 -11
- package/dist/session.js.map +1 -1
- package/dist/target.d.ts +40 -4
- package/dist/target.d.ts.map +1 -1
- package/dist/target.js +14 -3
- package/dist/target.js.map +1 -1
- package/package.json +4 -4
- package/skill/SKILL.md +167 -7
package/dist/half-link.js
CHANGED
|
@@ -40,10 +40,20 @@ import { normalizeRepo } from "@floh-solutions/gh-core";
|
|
|
40
40
|
* here.
|
|
41
41
|
*
|
|
42
42
|
* It is also **not the only guard**, and must not be treated as one. The board
|
|
43
|
-
* scan in `issue.ts`
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
43
|
+
* scan in `issue.ts` is the one that catches a retry from a different machine,
|
|
44
|
+
* and it is the stronger of the two wherever it can run. This one covers what
|
|
45
|
+
* it cannot: a board query that is refused or unavailable — which `adopt`
|
|
46
|
+
* deliberately does not treat as fatal — a half-link older than that scan's
|
|
47
|
+
* cap, and the plain fact that a local read answers without a round trip. It
|
|
48
|
+
* also knows *which* work item this run created and when, where a scan can only
|
|
49
|
+
* infer it from a URL.
|
|
50
|
+
*
|
|
51
|
+
* **What is NOT claimed here:** that WIQL cannot see a work item created
|
|
52
|
+
* moments ago. That would be a convenient argument and it is unmeasured — the
|
|
53
|
+
* one observation to hand points the other way (#821: a work item created by an
|
|
54
|
+
* accidental adopt was found by the board scan about a minute later). If
|
|
55
|
+
* somebody does measure a lag, it belongs in this paragraph; until then the
|
|
56
|
+
* reasons above are the ones this file rests on.
|
|
47
57
|
*
|
|
48
58
|
* ## Never fatal
|
|
49
59
|
*
|
package/dist/half-link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"half-link.js","sourceRoot":"","sources":["../src/half-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"half-link.js","sourceRoot":"","sources":["../src/half-link.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAErC,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,KAAK;AACP,6EAA6E;GAC3E,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,EAAE;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;GAMG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,QAAQ;gBAGtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAQvC;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAE1F;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAEvF;AAED,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAGrD;AAED,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAGvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAI5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAGA"}
|
package/dist/output.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AdoAuthError, AdoConcurrencyError, AdoConfigError, AdoError, AdoNetworkError, AdoNotFoundError, AdoRateLimitError, adviceFor, deletionAdvice, namesAResourcePermission, } from "@floh-solutions/ado-core";
|
|
2
|
-
import { GhUnavailableError, GitHubAccountError, GitHubAuthError, GitHubConfigError, GitHubError, GitHubIdentityMismatchError, GitHubNetworkError, GitHubNotFoundError, GitHubRateLimitError, GitHubValidationError, PullRequestNotAnIssueError, } from "@floh-solutions/gh-core";
|
|
2
|
+
import { GhUnavailableError, GitHubAccountError, GitHubAuthError, GitHubConfigError, GitHubError, GitHubGraphQLError, GitHubIdentityMismatchError, GitHubNetworkError, GitHubNotFoundError, GitHubRateLimitError, GitHubValidationError, IssueEditConflictError, PullRequestNotAnIssueError, UnknownLabelError, } from "@floh-solutions/gh-core";
|
|
3
3
|
/**
|
|
4
4
|
* The output contract.
|
|
5
5
|
*
|
|
@@ -242,6 +242,56 @@ function describe(error) {
|
|
|
242
242
|
* `undefined` when the error is not GitHub's, so the caller falls through.
|
|
243
243
|
*/
|
|
244
244
|
function describeGitHub(error) {
|
|
245
|
+
/**
|
|
246
|
+
* The lost-update guard said no, and this is the one GitHub failure an agent
|
|
247
|
+
* should treat exactly as it treats {@link AdoConcurrencyError}: the work is
|
|
248
|
+
* still good, re-read and re-apply.
|
|
249
|
+
*
|
|
250
|
+
* `kind: "conflict"` is deliberate and it is the same word the Azure DevOps
|
|
251
|
+
* side uses, because the skill teaches branching on it. What differs is the
|
|
252
|
+
* `hint`: on Azure DevOps a rev mismatch is not proof of an edit collision, so
|
|
253
|
+
* the advice is "diff the fields you changed". Here it **is** proof — the
|
|
254
|
+
* guard compares the field's own value and nothing else moves it — so the
|
|
255
|
+
* advice is simply to take the newer text into account.
|
|
256
|
+
*/
|
|
257
|
+
if (error instanceof IssueEditConflictError) {
|
|
258
|
+
return {
|
|
259
|
+
body: {
|
|
260
|
+
kind: "conflict",
|
|
261
|
+
platform: "github",
|
|
262
|
+
message: error.message,
|
|
263
|
+
repo: error.repo,
|
|
264
|
+
number: error.number,
|
|
265
|
+
conflicts: error.conflicts,
|
|
266
|
+
attribution: error.attribution,
|
|
267
|
+
hint: "Somebody changed the exact field you were overwriting. Re-read the issue, fold their "
|
|
268
|
+
+ "change into yours, and edit again — passing --if-title/--if-body so the next attempt "
|
|
269
|
+
+ "is guarded against what you just read. This is NOT the Azure DevOps rev case: a "
|
|
270
|
+
+ "comment cannot cause it, so it is a real collision.",
|
|
271
|
+
},
|
|
272
|
+
code: EXIT_FAILED,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* A label the repository does not have. Exit 3, with the rest of the
|
|
277
|
+
* refusals, because it is cleared by asking again more explicitly —
|
|
278
|
+
* `--create-label` — which is exactly what that exit code means here.
|
|
279
|
+
*/
|
|
280
|
+
if (error instanceof UnknownLabelError) {
|
|
281
|
+
return {
|
|
282
|
+
body: {
|
|
283
|
+
kind: "refused",
|
|
284
|
+
platform: "github",
|
|
285
|
+
message: error.message,
|
|
286
|
+
repo: error.repo,
|
|
287
|
+
unknown: error.unknown,
|
|
288
|
+
suggestions: error.suggestions,
|
|
289
|
+
hint: "Fix the spelling, or pass --create-label if you really mean to add a new label to the "
|
|
290
|
+
+ "repository. It is off by default because GitHub creates one silently.",
|
|
291
|
+
},
|
|
292
|
+
code: EXIT_REFUSED,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
245
295
|
// A repo that is not in repos.json, an account `gh` has no token for, a
|
|
246
296
|
// missing `gh`: all configuration, all exit 2. Retrying is pure noise, and the
|
|
247
297
|
// messages `gh-core` raises already name the file or the command to run.
|
|
@@ -346,6 +396,51 @@ function describeGitHub(error) {
|
|
|
346
396
|
code: EXIT_USAGE,
|
|
347
397
|
};
|
|
348
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* **A GraphQL refusal, which arrives as an HTTP 200 and so has no status to
|
|
401
|
+
* classify by.**
|
|
402
|
+
*
|
|
403
|
+
* `GitHubGraphQLError` is deliberately not a {@link GitHubError} (see its own
|
|
404
|
+
* doc), so without this arm it fell through to `kind: "internal"` — measured
|
|
405
|
+
* live on #827 against a bad node id. That label is actively wrong: `internal`
|
|
406
|
+
* means *this tool* broke, so an agent reading it goes looking for a defect
|
|
407
|
+
* here while GitHub is simply saying no.
|
|
408
|
+
*
|
|
409
|
+
* The split below is by **who has to act**, which is the only distinction
|
|
410
|
+
* worth drawing:
|
|
411
|
+
*
|
|
412
|
+
* - GitHub's own classifiers (`NOT_FOUND`, `FORBIDDEN`, `RATE_LIMITED`) are
|
|
413
|
+
* answers about the request, and map onto the same kinds their REST
|
|
414
|
+
* equivalents get. The caller acts.
|
|
415
|
+
* - A **query-validation** code (`undefinedField`, `argumentLiteralsIncompatible`,
|
|
416
|
+
* `variableMismatch` …) carries no `type` at all — GitHub puts it in
|
|
417
|
+
* `extensions.code`. Those mean the query this package sent is malformed,
|
|
418
|
+
* which is a defect in `gh-core` and not something the caller did. `internal`
|
|
419
|
+
* is the honest label for exactly those, and it stays.
|
|
420
|
+
*/
|
|
421
|
+
if (error instanceof GitHubGraphQLError) {
|
|
422
|
+
const kind = GRAPHQL_KINDS[error.type ?? ""];
|
|
423
|
+
return {
|
|
424
|
+
body: {
|
|
425
|
+
kind: kind?.kind ?? "internal",
|
|
426
|
+
platform: "github",
|
|
427
|
+
message: error.message,
|
|
428
|
+
operation: error.operation,
|
|
429
|
+
account: error.account,
|
|
430
|
+
// GitHub's classifier, verbatim, so a caller can branch on something
|
|
431
|
+
// finer than our kinds without us having to predict which.
|
|
432
|
+
graphQLType: error.type ?? null,
|
|
433
|
+
...(kind === undefined
|
|
434
|
+
? {
|
|
435
|
+
hint: "GitHub accepted the request and refused the operation, and gave no classifier — "
|
|
436
|
+
+ "which is what a malformed query looks like. This is a defect in gh-core rather "
|
|
437
|
+
+ "than something to retry.",
|
|
438
|
+
}
|
|
439
|
+
: { hint: kind.hint }),
|
|
440
|
+
},
|
|
441
|
+
code: kind?.code ?? EXIT_FAILED,
|
|
442
|
+
};
|
|
443
|
+
}
|
|
349
444
|
if (error instanceof GitHubError) {
|
|
350
445
|
return { body: githubBody("github", error), code: EXIT_FAILED };
|
|
351
446
|
}
|
|
@@ -363,6 +458,33 @@ function describeGitHub(error) {
|
|
|
363
458
|
}
|
|
364
459
|
return undefined;
|
|
365
460
|
}
|
|
461
|
+
/**
|
|
462
|
+
* GitHub's GraphQL classifiers, mapped onto the kinds an agent already branches
|
|
463
|
+
* on. Anything absent from here is a query-validation code and stays
|
|
464
|
+
* `internal` — see the call site.
|
|
465
|
+
*/
|
|
466
|
+
const GRAPHQL_KINDS = {
|
|
467
|
+
NOT_FOUND: {
|
|
468
|
+
kind: "notFound",
|
|
469
|
+
code: EXIT_FAILED,
|
|
470
|
+
hint: "The node id names nothing this account can see. On GitHub that is also how \"not visible "
|
|
471
|
+
+ "to you\" is spelled, so check the binding before concluding it is gone. "
|
|
472
|
+
+ "`pharos comment list <owner/name#n>` prints the current ids.",
|
|
473
|
+
},
|
|
474
|
+
FORBIDDEN: {
|
|
475
|
+
kind: "auth",
|
|
476
|
+
code: EXIT_USAGE,
|
|
477
|
+
hint: "The account is authenticated and not permitted to do this. Hiding and pinning need write "
|
|
478
|
+
+ "access to the repository; `pharos comment list` reports what each comment permits in "
|
|
479
|
+
+ "its `may` object, which is cheaper than finding out this way.",
|
|
480
|
+
},
|
|
481
|
+
RATE_LIMITED: {
|
|
482
|
+
kind: "rateLimit",
|
|
483
|
+
code: EXIT_FAILED,
|
|
484
|
+
hint: "GraphQL has its own hourly budget, separate from REST's 5,000. Wait and repeat the "
|
|
485
|
+
+ "identical call.",
|
|
486
|
+
},
|
|
487
|
+
};
|
|
366
488
|
function githubBody(kind, error) {
|
|
367
489
|
return {
|
|
368
490
|
kind,
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -26,8 +26,6 @@ export interface SessionOptions {
|
|
|
26
26
|
}
|
|
27
27
|
export declare class Session {
|
|
28
28
|
#private;
|
|
29
|
-
readonly client: AdoClient;
|
|
30
|
-
readonly wiki: WikiApi;
|
|
31
29
|
readonly budget: WriteBudget;
|
|
32
30
|
readonly apply: boolean;
|
|
33
31
|
readonly previewOnly: boolean;
|
|
@@ -41,6 +39,31 @@ export declare class Session {
|
|
|
41
39
|
*/
|
|
42
40
|
readonly halfLinks: HalfLinkJournal;
|
|
43
41
|
constructor(options: SessionOptions);
|
|
42
|
+
/**
|
|
43
|
+
* The Azure DevOps client — **resolved on first use, not in the constructor.**
|
|
44
|
+
*
|
|
45
|
+
* It was built eagerly, and that made `ADO_PAT` the price of entry to the
|
|
46
|
+
* whole CLI: `pharos comment list contoso/widgets#45` reads a GitHub issue
|
|
47
|
+
* through `gh-core` with the `gh` credential and never touches Azure DevOps,
|
|
48
|
+
* and it answered `{"kind":"config","message":"ADO_PAT is not set…"}` (#839).
|
|
49
|
+
* Somebody with `gh` signed in and no Azure DevOps PAT — a state
|
|
50
|
+
* `pharos doctor` reports as fine, and which the separate Keychain entries
|
|
51
|
+
* exist to make possible — could not use a single GitHub verb.
|
|
52
|
+
*
|
|
53
|
+
* {@link github} was made lazy for exactly this reason (#782) and this half
|
|
54
|
+
* was not. The fix belongs here rather than in the `comment` dispatch: any
|
|
55
|
+
* verb family that grows a GitHub target inherits it, and a special case in
|
|
56
|
+
* one command is a special case the next one has to remember.
|
|
57
|
+
*
|
|
58
|
+
* **Resolution failure is deferred, never softened.** The `AdoConfigError`
|
|
59
|
+
* still names the missing variable and still exits 2 — it arrives when
|
|
60
|
+
* something actually needs Azure DevOps, which is where it is an answer
|
|
61
|
+
* rather than an obstacle. See {@link approve} for the one place that
|
|
62
|
+
* ordering has to be forced.
|
|
63
|
+
*/
|
|
64
|
+
get client(): AdoClient;
|
|
65
|
+
/** The wiki API, over {@link client}'s transport — and lazy for its sake. */
|
|
66
|
+
get wiki(): WikiApi;
|
|
44
67
|
/**
|
|
45
68
|
* The GitHub client, resolved once, from `~/.config/pharos/repos.json`.
|
|
46
69
|
*
|
|
@@ -103,6 +126,16 @@ export interface DestructiveAction {
|
|
|
103
126
|
what: string;
|
|
104
127
|
/** The structured version, emitted either way so a preview is machine-readable. */
|
|
105
128
|
would: Record<string, unknown>;
|
|
129
|
+
/**
|
|
130
|
+
* Which platform is about to be written to. Defaults to `"ado"`.
|
|
131
|
+
*
|
|
132
|
+
* It exists so {@link approve} can put the two refusals in the right order —
|
|
133
|
+
* see its doc. Azure DevOps is the default because it is what all but one of
|
|
134
|
+
* the destructive verbs here write to, and because the failure mode of
|
|
135
|
+
* forgetting the flag is loud (a GitHub-only verb starts demanding a PAT,
|
|
136
|
+
* which is #839 and has a test) rather than silent.
|
|
137
|
+
*/
|
|
138
|
+
platform?: "ado" | "github" | undefined;
|
|
106
139
|
}
|
|
107
140
|
/**
|
|
108
141
|
* The gate in front of anything that destroys or overwrites.
|
|
@@ -121,6 +154,22 @@ export interface DestructiveAction {
|
|
|
121
154
|
* is how a half-finished job gets reported as done (`docs/pharos-cli-plan.md`
|
|
122
155
|
* §2.5). `--dry-run` exits 0 because there the preview IS the deliverable.
|
|
123
156
|
*
|
|
157
|
+
* ## The credential is checked before the gate, and that ordering is the point
|
|
158
|
+
*
|
|
159
|
+
* {@link Session.client} resolves on first use (#839), and every arm below
|
|
160
|
+
* runs *before* the verb touches it. So on a machine with no `ADO_PAT`,
|
|
161
|
+
* `pharos comment delete 210 5` would answer "Refusing to delete comment 5 on
|
|
162
|
+
* #210 without --yes" — a refusal that invites a retry with `--yes` which then
|
|
163
|
+
* fails on the credential anyway. Two refusals, the useful one second.
|
|
164
|
+
*
|
|
165
|
+
* Touching the client here puts the credential failure back in front, exactly
|
|
166
|
+
* where it was when the client was eager. A `--dry-run` preview of an Azure
|
|
167
|
+
* DevOps write is refused for the same reason: a preview of something this
|
|
168
|
+
* machine cannot do is a preview of nothing.
|
|
169
|
+
*
|
|
170
|
+
* A GitHub action says so and is exempt — that is the whole bug this ordering
|
|
171
|
+
* has to avoid recreating.
|
|
172
|
+
*
|
|
124
173
|
* @returns `undefined` to proceed with the write, or the exit code to return.
|
|
125
174
|
*/
|
|
126
175
|
export declare function approve(io: Io, session: Session, action: DestructiveAction): ExitCode | undefined;
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAsC,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAEzF;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC;AAED,qBAAa,OAAO;;IAClB,QAAQ,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAsC,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAEzF;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC;AAED,qBAAa,OAAO;;IAClB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;gBAWxB,OAAO,EAAE,cAAc;IAcnC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,IAAI,MAAM,IAAI,SAAS,CAQtB;IAED,6EAA6E;IAC7E,IAAI,IAAI,IAAI,OAAO,CAGlB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAerC;;;;;;;;;OASG;IACH,WAAW,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM;IAQ3E;;;;;;;;;OASG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,wEAAwE;IAClE,cAAc,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAiDrF;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAejG"}
|
package/dist/session.js
CHANGED
|
@@ -3,8 +3,6 @@ import { WriteBudget } from "./budget.js";
|
|
|
3
3
|
import { HalfLinkJournal } from "./half-link.js";
|
|
4
4
|
import { EXIT_OK, emit, refusal, usageError } from "./output.js";
|
|
5
5
|
export class Session {
|
|
6
|
-
client;
|
|
7
|
-
wiki;
|
|
8
6
|
budget;
|
|
9
7
|
apply;
|
|
10
8
|
previewOnly;
|
|
@@ -18,7 +16,11 @@ export class Session {
|
|
|
18
16
|
*/
|
|
19
17
|
halfLinks;
|
|
20
18
|
#env;
|
|
19
|
+
#organization;
|
|
20
|
+
#project;
|
|
21
21
|
#wikiHint;
|
|
22
|
+
#client;
|
|
23
|
+
#wikiApi;
|
|
22
24
|
#resolvedWiki;
|
|
23
25
|
#github;
|
|
24
26
|
constructor(options) {
|
|
@@ -27,18 +29,48 @@ export class Session {
|
|
|
27
29
|
this.previewOnly = options.previewOnly;
|
|
28
30
|
this.pretty = options.pretty;
|
|
29
31
|
this.#env = options.env;
|
|
32
|
+
this.#organization = options.organization;
|
|
33
|
+
this.#project = options.project;
|
|
30
34
|
this.#wikiHint = options.wiki;
|
|
35
|
+
this.#client = options.client;
|
|
31
36
|
this.#github = options.github;
|
|
32
37
|
this.halfLinks = new HalfLinkJournal(options.env);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The Azure DevOps client — **resolved on first use, not in the constructor.**
|
|
41
|
+
*
|
|
42
|
+
* It was built eagerly, and that made `ADO_PAT` the price of entry to the
|
|
43
|
+
* whole CLI: `pharos comment list contoso/widgets#45` reads a GitHub issue
|
|
44
|
+
* through `gh-core` with the `gh` credential and never touches Azure DevOps,
|
|
45
|
+
* and it answered `{"kind":"config","message":"ADO_PAT is not set…"}` (#839).
|
|
46
|
+
* Somebody with `gh` signed in and no Azure DevOps PAT — a state
|
|
47
|
+
* `pharos doctor` reports as fine, and which the separate Keychain entries
|
|
48
|
+
* exist to make possible — could not use a single GitHub verb.
|
|
49
|
+
*
|
|
50
|
+
* {@link github} was made lazy for exactly this reason (#782) and this half
|
|
51
|
+
* was not. The fix belongs here rather than in the `comment` dispatch: any
|
|
52
|
+
* verb family that grows a GitHub target inherits it, and a special case in
|
|
53
|
+
* one command is a special case the next one has to remember.
|
|
54
|
+
*
|
|
55
|
+
* **Resolution failure is deferred, never softened.** The `AdoConfigError`
|
|
56
|
+
* still names the missing variable and still exits 2 — it arrives when
|
|
57
|
+
* something actually needs Azure DevOps, which is where it is an answer
|
|
58
|
+
* rather than an obstacle. See {@link approve} for the one place that
|
|
59
|
+
* ordering has to be forced.
|
|
60
|
+
*/
|
|
61
|
+
get client() {
|
|
62
|
+
this.#client ??= AdoClient.fromEnv(this.#env, {
|
|
63
|
+
...(this.#organization === undefined ? {} : { organization: this.#organization }),
|
|
64
|
+
...(this.#project === undefined ? {} : { project: this.#project }),
|
|
65
|
+
// Every write goes through here, whoever issued it.
|
|
66
|
+
fetch: this.budget.wrap((input, init) => globalThis.fetch(input, init)),
|
|
67
|
+
});
|
|
68
|
+
return this.#client;
|
|
69
|
+
}
|
|
70
|
+
/** The wiki API, over {@link client}'s transport — and lazy for its sake. */
|
|
71
|
+
get wiki() {
|
|
72
|
+
this.#wikiApi ??= new WikiApi(this.client.http);
|
|
73
|
+
return this.#wikiApi;
|
|
42
74
|
}
|
|
43
75
|
/**
|
|
44
76
|
* The GitHub client, resolved once, from `~/.config/pharos/repos.json`.
|
|
@@ -166,9 +198,28 @@ export class Session {
|
|
|
166
198
|
* is how a half-finished job gets reported as done (`docs/pharos-cli-plan.md`
|
|
167
199
|
* §2.5). `--dry-run` exits 0 because there the preview IS the deliverable.
|
|
168
200
|
*
|
|
201
|
+
* ## The credential is checked before the gate, and that ordering is the point
|
|
202
|
+
*
|
|
203
|
+
* {@link Session.client} resolves on first use (#839), and every arm below
|
|
204
|
+
* runs *before* the verb touches it. So on a machine with no `ADO_PAT`,
|
|
205
|
+
* `pharos comment delete 210 5` would answer "Refusing to delete comment 5 on
|
|
206
|
+
* #210 without --yes" — a refusal that invites a retry with `--yes` which then
|
|
207
|
+
* fails on the credential anyway. Two refusals, the useful one second.
|
|
208
|
+
*
|
|
209
|
+
* Touching the client here puts the credential failure back in front, exactly
|
|
210
|
+
* where it was when the client was eager. A `--dry-run` preview of an Azure
|
|
211
|
+
* DevOps write is refused for the same reason: a preview of something this
|
|
212
|
+
* machine cannot do is a preview of nothing.
|
|
213
|
+
*
|
|
214
|
+
* A GitHub action says so and is exempt — that is the whole bug this ordering
|
|
215
|
+
* has to avoid recreating.
|
|
216
|
+
*
|
|
169
217
|
* @returns `undefined` to proceed with the write, or the exit code to return.
|
|
170
218
|
*/
|
|
171
219
|
export function approve(io, session, action) {
|
|
220
|
+
// Raises `AdoConfigError` naming the missing variable, or does nothing.
|
|
221
|
+
if (action.platform !== "github")
|
|
222
|
+
void session.client;
|
|
172
223
|
if (session.previewOnly) {
|
|
173
224
|
emit(io, { applied: false, dryRun: true, ...action.would });
|
|
174
225
|
return EXIT_OK;
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAC;AAyBzF,MAAM,OAAO,OAAO;IACT,MAAM,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/target.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type IssueCoordinate } from "@floh-solutions/gh-core";
|
|
1
2
|
/**
|
|
2
|
-
* What a comment verb is addressing: a work item,
|
|
3
|
+
* What a comment verb is addressing: a work item, a wiki page, or a GitHub
|
|
4
|
+
* issue.
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
6
|
+
* Three comment surfaces, three APIs with different quirks, but from where an
|
|
7
|
+
* agent stands they are one idea — "the discussion about this thing" — so
|
|
8
|
+
* `pharos comment` takes any of them and the target says which.
|
|
7
9
|
*
|
|
8
10
|
* **The rule is that a wiki page is an absolute path, and that is not a
|
|
9
11
|
* convention invented here.** The Azure DevOps wiki API answers 404 for a page
|
|
@@ -12,6 +14,20 @@
|
|
|
12
14
|
* spelling that disambiguates is also the only spelling that works, and a
|
|
13
15
|
* target that omits it is rejected with the reason rather than quietly fixed —
|
|
14
16
|
* somebody passing `Plans/Foo` has a bug somewhere upstream worth finding.
|
|
17
|
+
*
|
|
18
|
+
* **A GitHub issue is `owner/name#45`** — the form plan §8 already chose for
|
|
19
|
+
* `pharos issue`, so one spelling addresses an issue everywhere in this CLI.
|
|
20
|
+
* The three grammars cannot collide: a work item is all digits, a wiki page
|
|
21
|
+
* opens with `/`, and a repository name may contain neither a `#` nor a second
|
|
22
|
+
* `/`. `gh-core` owns the parse (it also accepts `owner/name/45` and a full
|
|
23
|
+
* issue URL, because all three get pasted), so there is no second grammar here.
|
|
24
|
+
*
|
|
25
|
+
* **A GitHub target carries no account, deliberately.** The account is resolved
|
|
26
|
+
* from `repos.json` at the point of use — plan §2's whole finding is that
|
|
27
|
+
* letting anything else decide returns a cheerful 200 from the wrong
|
|
28
|
+
* repository. A `Target` is what the caller *said*; the binding is what this
|
|
29
|
+
* machine is configured to do about it, and conflating them is how the wrong
|
|
30
|
+
* one gets used.
|
|
15
31
|
*/
|
|
16
32
|
export type Target = {
|
|
17
33
|
kind: "workItem";
|
|
@@ -19,7 +35,27 @@ export type Target = {
|
|
|
19
35
|
} | {
|
|
20
36
|
kind: "wikiPage";
|
|
21
37
|
path: string;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "githubIssue";
|
|
40
|
+
issue: IssueCoordinate;
|
|
22
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* The two Azure DevOps surfaces, as their own type.
|
|
44
|
+
*
|
|
45
|
+
* Named rather than left implicit because the arms that handle them are written
|
|
46
|
+
* as "work item, else wiki page" — which was total when there were two kinds
|
|
47
|
+
* and silently stopped being when GitHub arrived. Taking this type makes the
|
|
48
|
+
* compiler carry that guarantee instead of a reader having to.
|
|
49
|
+
*/
|
|
50
|
+
export type AdoTarget = Extract<Target, {
|
|
51
|
+
kind: "workItem";
|
|
52
|
+
} | {
|
|
53
|
+
kind: "wikiPage";
|
|
54
|
+
}>;
|
|
55
|
+
/** A GitHub issue target, for the arms that only accept one. */
|
|
56
|
+
export type GitHubTarget = Extract<Target, {
|
|
57
|
+
kind: "githubIssue";
|
|
58
|
+
}>;
|
|
23
59
|
export declare function parseTarget(raw: string): Target;
|
|
24
60
|
export declare function describeTarget(target: Target): string;
|
|
25
61
|
//# sourceMappingURL=target.d.ts.map
|
package/dist/target.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../src/target.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../src/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAIrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAErF,gEAAgE;AAChE,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAEpE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAyB/C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASrD"}
|
package/dist/target.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseIssueCoordinate } from "@floh-solutions/gh-core";
|
|
1
2
|
import { usageError } from "./output.js";
|
|
2
3
|
export function parseTarget(raw) {
|
|
3
4
|
const value = raw.trim();
|
|
@@ -13,11 +14,21 @@ export function parseTarget(raw) {
|
|
|
13
14
|
}
|
|
14
15
|
return { kind: "wikiPage", path: value };
|
|
15
16
|
}
|
|
17
|
+
const issue = parseIssueCoordinate(value);
|
|
18
|
+
if (issue !== undefined)
|
|
19
|
+
return { kind: "githubIssue", issue };
|
|
16
20
|
throw usageError(`Cannot tell what "${raw}" is. A work item is its number (210); a wiki page is an absolute `
|
|
17
|
-
+ `path (/Plans/Foo)
|
|
18
|
-
+
|
|
21
|
+
+ `path (/Plans/Foo); a GitHub issue is owner/name#45. The leading slash on a wiki page is `
|
|
22
|
+
+ `required by the wiki API itself, not by this tool — it answers 404 without one.`, { target: raw });
|
|
19
23
|
}
|
|
20
24
|
export function describeTarget(target) {
|
|
21
|
-
|
|
25
|
+
switch (target.kind) {
|
|
26
|
+
case "workItem":
|
|
27
|
+
return `#${target.id}`;
|
|
28
|
+
case "wikiPage":
|
|
29
|
+
return target.path;
|
|
30
|
+
case "githubIssue":
|
|
31
|
+
return `${target.issue.repo}#${target.issue.number}`;
|
|
32
|
+
}
|
|
22
33
|
}
|
|
23
34
|
//# sourceMappingURL=target.js.map
|
package/dist/target.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target.js","sourceRoot":"","sources":["../src/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../src/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAwB,MAAM,yBAAyB,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkDzC,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAEzB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,CAAC;YAAE,MAAM,UAAU,CAAC,IAAI,GAAG,0BAA0B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,MAAM,UAAU,CAAC,8CAA8C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAE/D,MAAM,UAAU,CACd,qBAAqB,GAAG,oEAAoE;UACxF,0FAA0F;UAC1F,iFAAiF,EACrF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@floh-solutions/pharos-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "Azure DevOps from a headless shell, for an agent: the whole context of a task in one call, and the wiki/comment verbs Microsoft's MCP server does not ship.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "FLOH Solutions",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"node": ">=22"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@floh-solutions/
|
|
28
|
-
"@floh-solutions/gh-core": "0.1
|
|
29
|
-
"@floh-solutions/
|
|
27
|
+
"@floh-solutions/ado-core": "0.9.1",
|
|
28
|
+
"@floh-solutions/gh-core": "0.2.1",
|
|
29
|
+
"@floh-solutions/plan-to-board": "0.1.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^22.10.2",
|