@ttctl/cli 0.1.0-rc.6 → 0.1.0-rc.8
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/commands/applications/availability-request.d.ts +47 -0
- package/dist/commands/applications/availability-request.d.ts.map +1 -0
- package/dist/commands/applications/availability-request.js +98 -0
- package/dist/commands/applications/availability-request.js.map +1 -0
- package/dist/commands/applications/confirm.d.ts +32 -2
- package/dist/commands/applications/confirm.d.ts.map +1 -1
- package/dist/commands/applications/confirm.js +194 -1
- package/dist/commands/applications/confirm.js.map +1 -1
- package/dist/commands/applications/index.d.ts +6 -2
- package/dist/commands/applications/index.d.ts.map +1 -1
- package/dist/commands/applications/index.js +112 -3
- package/dist/commands/applications/index.js.map +1 -1
- package/dist/commands/applications/interview.d.ts +159 -0
- package/dist/commands/applications/interview.d.ts.map +1 -0
- package/dist/commands/applications/interview.js +396 -0
- package/dist/commands/applications/interview.js.map +1 -0
- package/dist/commands/jobs/apply.d.ts +194 -0
- package/dist/commands/jobs/apply.d.ts.map +1 -0
- package/dist/commands/jobs/apply.js +505 -0
- package/dist/commands/jobs/apply.js.map +1 -0
- package/dist/commands/jobs/index.d.ts +19 -5
- package/dist/commands/jobs/index.d.ts.map +1 -1
- package/dist/commands/jobs/index.js +78 -6
- package/dist/commands/jobs/index.js.map +1 -1
- package/dist/commands/jobs/show.d.ts +63 -2
- package/dist/commands/jobs/show.d.ts.map +1 -1
- package/dist/commands/jobs/show.js +77 -5
- package/dist/commands/jobs/show.js.map +1 -1
- package/dist/commands/payments/index.d.ts +5 -2
- package/dist/commands/payments/index.d.ts.map +1 -1
- package/dist/commands/payments/index.js +27 -4
- package/dist/commands/payments/index.js.map +1 -1
- package/dist/commands/payments/rate.d.ts +16 -0
- package/dist/commands/payments/rate.d.ts.map +1 -1
- package/dist/commands/payments/rate.js +30 -0
- package/dist/commands/payments/rate.js.map +1 -1
- package/dist/commands/payments/summary.d.ts +17 -0
- package/dist/commands/payments/summary.d.ts.map +1 -0
- package/dist/commands/payments/summary.js +42 -0
- package/dist/commands/payments/summary.js.map +1 -0
- package/dist/commands/profile/employment/index.d.ts.map +1 -1
- package/dist/commands/profile/employment/index.js +23 -3
- package/dist/commands/profile/employment/index.js.map +1 -1
- package/dist/commands/profile/reviews/index.d.ts.map +1 -1
- package/dist/commands/profile/reviews/index.js +5 -1
- package/dist/commands/profile/reviews/index.js.map +1 -1
- package/dist/commands/profile/reviews/submit-for-review.d.ts +8 -0
- package/dist/commands/profile/reviews/submit-for-review.d.ts.map +1 -1
- package/dist/commands/profile/reviews/submit-for-review.js +15 -1
- package/dist/commands/profile/reviews/submit-for-review.js.map +1 -1
- package/dist/lib/json-input.d.ts +121 -0
- package/dist/lib/json-input.d.ts.map +1 -0
- package/dist/lib/json-input.js +245 -0
- package/dist/lib/json-input.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/applications/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,SAAS,UAAU;IACjB,OAAO,IAAI,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAChF,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,IAAI,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;AACxH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/applications/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { applications } from "@ttctl/core";
|
|
2
|
+
import type { OutputFormat } from "../../lib/output.js";
|
|
3
|
+
/**
|
|
4
|
+
* Action handler for `ttctl applications interview show <id>` (#439).
|
|
5
|
+
* Read-only fetch of one interview by id. The id comes from
|
|
6
|
+
* `ttctl applications show <activityId>` output (the `Interview: <id>`
|
|
7
|
+
* line surfaced when the activity row has an associated interview).
|
|
8
|
+
*
|
|
9
|
+
* Pretty rendering is a sectioned multi-line block grouped into
|
|
10
|
+
* Interview / Method / Contacts / Notes / Job. Sections with no data
|
|
11
|
+
* (e.g. no contacts when the interviewer side hasn't populated them
|
|
12
|
+
* yet) are omitted.
|
|
13
|
+
*
|
|
14
|
+
* `json` / `yaml` always emit the full {@link applications.InterviewDetail}
|
|
15
|
+
* projection — machine consumers project as needed.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runApplicationsInterviewShow(id: string, output: OutputFormat): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Render an {@link applications.InterviewDetail} as a sectioned
|
|
20
|
+
* multi-line block. Pure — directly unit-testable.
|
|
21
|
+
*
|
|
22
|
+
* Layout:
|
|
23
|
+
*
|
|
24
|
+
* Interview <id>
|
|
25
|
+
* Status: <statusValue>
|
|
26
|
+
* Kind: <kindValue>
|
|
27
|
+
* Type: <interviewType>
|
|
28
|
+
* Time: <interviewTime>
|
|
29
|
+
* Updated: <updatedAt>
|
|
30
|
+
*
|
|
31
|
+
* Scheduling
|
|
32
|
+
* Initiator: <initiator>
|
|
33
|
+
* Proposed slots:
|
|
34
|
+
* - <slot1>
|
|
35
|
+
* - <slot2>
|
|
36
|
+
* Comment: <schedulingComment>
|
|
37
|
+
*
|
|
38
|
+
* Method // omitted if method is null
|
|
39
|
+
* Type: <typeV2>
|
|
40
|
+
* Resource: <resource>
|
|
41
|
+
* Conference: <conferenceUrl>
|
|
42
|
+
*
|
|
43
|
+
* Information // omitted if information is null
|
|
44
|
+
* <recruiter brief, paragraph-preserved>
|
|
45
|
+
*
|
|
46
|
+
* Contacts // omitted if no contacts
|
|
47
|
+
* <main> <fullName> <position>
|
|
48
|
+
* Email: <email>
|
|
49
|
+
* Phone: <phoneNumber>
|
|
50
|
+
* TimeZone: <location> (<value>)
|
|
51
|
+
*
|
|
52
|
+
* Notes // omitted if no notes
|
|
53
|
+
* [<section>] <note>
|
|
54
|
+
*
|
|
55
|
+
* Job // omitted if job is null
|
|
56
|
+
* Job id: <id>
|
|
57
|
+
* Activity id: <activityItemId>
|
|
58
|
+
*
|
|
59
|
+
* Prep guide // omitted if guideId is null
|
|
60
|
+
* ID: <guideId>
|
|
61
|
+
*/
|
|
62
|
+
export declare function formatInterviewDetail(item: applications.InterviewDetail): string;
|
|
63
|
+
/**
|
|
64
|
+
* Action handler for `ttctl applications interview notes show <jobId>` (#440).
|
|
65
|
+
* Read-only fetch of the talent's prep notes for the interview attached
|
|
66
|
+
* to a given job, via the portal-side `GetInterviewNotes` query.
|
|
67
|
+
*
|
|
68
|
+
* **Input is the JOB id, not the interview id** — the wire op takes
|
|
69
|
+
* `$jobId: ID!` and traverses `viewer.job(id).activityItem.interview`.
|
|
70
|
+
* Discover the job id via `ttctl applications interview show
|
|
71
|
+
* <interviewId>` (the `Job → Job id` line surfaced by the #439
|
|
72
|
+
* projection) or `ttctl applications show <activityId>`.
|
|
73
|
+
*
|
|
74
|
+
* Pretty rendering groups the notes by section header (the
|
|
75
|
+
* `InterviewGuideSectionIdentifierEnum` member) and falls back to
|
|
76
|
+
* unsectioned bullets for null-section notes. Empty-notes results
|
|
77
|
+
* render a single-line `(no prep notes)` message rather than blank
|
|
78
|
+
* output.
|
|
79
|
+
*
|
|
80
|
+
* `json` / `yaml` always emit the full
|
|
81
|
+
* {@link applications.InterviewNotesProjection} — machine consumers
|
|
82
|
+
* project as needed.
|
|
83
|
+
*/
|
|
84
|
+
export declare function runApplicationsInterviewNotesShow(jobId: string, output: OutputFormat): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Render an {@link applications.InterviewNotesProjection} as a sectioned
|
|
87
|
+
* multi-line block. Pure — directly unit-testable.
|
|
88
|
+
*
|
|
89
|
+
* Layout:
|
|
90
|
+
*
|
|
91
|
+
* Interview notes for job <jobId>
|
|
92
|
+
* Interview id: <interviewId> // omitted if null
|
|
93
|
+
* Interview kind: <interviewKind> // omitted if null
|
|
94
|
+
*
|
|
95
|
+
* Notes
|
|
96
|
+
* [<section>] <note> // grouped by section
|
|
97
|
+
*
|
|
98
|
+
* When the job has no attached interview, prints:
|
|
99
|
+
*
|
|
100
|
+
* Interview notes for job <jobId>
|
|
101
|
+
* (no interview attached to this job)
|
|
102
|
+
*
|
|
103
|
+
* When the interview has no prep notes, prints:
|
|
104
|
+
*
|
|
105
|
+
* Interview notes for job <jobId>
|
|
106
|
+
* Interview id: <interviewId>
|
|
107
|
+
* ...
|
|
108
|
+
* (no prep notes)
|
|
109
|
+
*/
|
|
110
|
+
export declare function formatInterviewNotes(item: applications.InterviewNotesProjection): string;
|
|
111
|
+
/**
|
|
112
|
+
* Action handler for `ttctl applications interview guide show <interviewId>` (#470).
|
|
113
|
+
* Read-only fetch of the interview-prep guide content (sections + tips)
|
|
114
|
+
* for one interview, via the mobile-gateway `InterviewGuide` query.
|
|
115
|
+
*
|
|
116
|
+
* **Input is the INTERVIEW id**, not the guide id. The wire op takes
|
|
117
|
+
* `$interviewId: ID!` and traverses `viewer.interview(id).guide`.
|
|
118
|
+
* Discover via `ttctl applications interview show <interviewId>` or
|
|
119
|
+
* `ttctl applications show <activityId>` (the `Interview: <id>` line).
|
|
120
|
+
*
|
|
121
|
+
* Pretty rendering groups tips under their section headers
|
|
122
|
+
* (identifier + title + subtitle). Each tip renders as a labeled
|
|
123
|
+
* sub-block with `Tip:` / `Content:` / `Template:` lines; the
|
|
124
|
+
* `hardcodedContent` label is "Template" to disambiguate from
|
|
125
|
+
* `content` (which is the talent/job-personalized body the guide
|
|
126
|
+
* pipeline splices in). Empty-guide results render a single-line
|
|
127
|
+
* `(no guide attached to this interview)` message rather than blank
|
|
128
|
+
* output.
|
|
129
|
+
*
|
|
130
|
+
* `json` / `yaml` always emit the full
|
|
131
|
+
* {@link applications.InterviewGuideProjection} — machine consumers
|
|
132
|
+
* project as needed.
|
|
133
|
+
*/
|
|
134
|
+
export declare function runApplicationsInterviewGuideShow(interviewId: string, output: OutputFormat): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Render an {@link applications.InterviewGuideProjection} as a sectioned
|
|
137
|
+
* multi-line block. Pure — directly unit-testable.
|
|
138
|
+
*
|
|
139
|
+
* Layout:
|
|
140
|
+
*
|
|
141
|
+
* Interview guide for interview <interviewId>
|
|
142
|
+
* Guide id: <guideId> // omitted if null
|
|
143
|
+
*
|
|
144
|
+
* [<identifier>] <title> // section header; falls back to identifier-only
|
|
145
|
+
* <subtitle> // omitted if null/empty
|
|
146
|
+
*
|
|
147
|
+
* • <tipIdentifier> — <tipTitle> // tip header; falls back to identifier-only
|
|
148
|
+
* Content:
|
|
149
|
+
* <multi-line content, indented>
|
|
150
|
+
* Template:
|
|
151
|
+
* <multi-line hardcodedContent, indented>
|
|
152
|
+
*
|
|
153
|
+
* When no guide is attached, prints:
|
|
154
|
+
*
|
|
155
|
+
* Interview guide for interview <interviewId>
|
|
156
|
+
* (no guide attached to this interview)
|
|
157
|
+
*/
|
|
158
|
+
export declare function formatInterviewGuide(item: applications.InterviewGuideProjection): string;
|
|
159
|
+
//# sourceMappingURL=interview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interview.d.ts","sourceRoot":"","sources":["../../../src/commands/applications/interview.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAalG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,GAAG,MAAM,CAoGhF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1G;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,wBAAwB,GAAG,MAAM,CA8BxF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAahH;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,wBAAwB,GAAG,MAAM,CAoDxF"}
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { applications } from "@ttctl/core";
|
|
4
|
+
import { emitResult } from "../../lib/output.js";
|
|
5
|
+
import { handleApplicationsError, loadAuthTokenOrExit } from "./shared.js";
|
|
6
|
+
/**
|
|
7
|
+
* Action handler for `ttctl applications interview show <id>` (#439).
|
|
8
|
+
* Read-only fetch of one interview by id. The id comes from
|
|
9
|
+
* `ttctl applications show <activityId>` output (the `Interview: <id>`
|
|
10
|
+
* line surfaced when the activity row has an associated interview).
|
|
11
|
+
*
|
|
12
|
+
* Pretty rendering is a sectioned multi-line block grouped into
|
|
13
|
+
* Interview / Method / Contacts / Notes / Job. Sections with no data
|
|
14
|
+
* (e.g. no contacts when the interviewer side hasn't populated them
|
|
15
|
+
* yet) are omitted.
|
|
16
|
+
*
|
|
17
|
+
* `json` / `yaml` always emit the full {@link applications.InterviewDetail}
|
|
18
|
+
* projection — machine consumers project as needed.
|
|
19
|
+
*/
|
|
20
|
+
export async function runApplicationsInterviewShow(id, output) {
|
|
21
|
+
const token = await loadAuthTokenOrExit("applications interview show", output);
|
|
22
|
+
let item;
|
|
23
|
+
try {
|
|
24
|
+
item = await applications.interviews.show(token, id);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
handleApplicationsError("applications interview show", err, output);
|
|
28
|
+
}
|
|
29
|
+
emitResult(item, output, {
|
|
30
|
+
pretty: (data) => formatInterviewDetail(data),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Render an {@link applications.InterviewDetail} as a sectioned
|
|
35
|
+
* multi-line block. Pure — directly unit-testable.
|
|
36
|
+
*
|
|
37
|
+
* Layout:
|
|
38
|
+
*
|
|
39
|
+
* Interview <id>
|
|
40
|
+
* Status: <statusValue>
|
|
41
|
+
* Kind: <kindValue>
|
|
42
|
+
* Type: <interviewType>
|
|
43
|
+
* Time: <interviewTime>
|
|
44
|
+
* Updated: <updatedAt>
|
|
45
|
+
*
|
|
46
|
+
* Scheduling
|
|
47
|
+
* Initiator: <initiator>
|
|
48
|
+
* Proposed slots:
|
|
49
|
+
* - <slot1>
|
|
50
|
+
* - <slot2>
|
|
51
|
+
* Comment: <schedulingComment>
|
|
52
|
+
*
|
|
53
|
+
* Method // omitted if method is null
|
|
54
|
+
* Type: <typeV2>
|
|
55
|
+
* Resource: <resource>
|
|
56
|
+
* Conference: <conferenceUrl>
|
|
57
|
+
*
|
|
58
|
+
* Information // omitted if information is null
|
|
59
|
+
* <recruiter brief, paragraph-preserved>
|
|
60
|
+
*
|
|
61
|
+
* Contacts // omitted if no contacts
|
|
62
|
+
* <main> <fullName> <position>
|
|
63
|
+
* Email: <email>
|
|
64
|
+
* Phone: <phoneNumber>
|
|
65
|
+
* TimeZone: <location> (<value>)
|
|
66
|
+
*
|
|
67
|
+
* Notes // omitted if no notes
|
|
68
|
+
* [<section>] <note>
|
|
69
|
+
*
|
|
70
|
+
* Job // omitted if job is null
|
|
71
|
+
* Job id: <id>
|
|
72
|
+
* Activity id: <activityItemId>
|
|
73
|
+
*
|
|
74
|
+
* Prep guide // omitted if guideId is null
|
|
75
|
+
* ID: <guideId>
|
|
76
|
+
*/
|
|
77
|
+
export function formatInterviewDetail(item) {
|
|
78
|
+
const lines = [];
|
|
79
|
+
lines.push(`Interview ${item.id}`);
|
|
80
|
+
if (item.status !== null)
|
|
81
|
+
lines.push(` Status: ${item.status}`);
|
|
82
|
+
if (item.kind !== null)
|
|
83
|
+
lines.push(` Kind: ${item.kind}`);
|
|
84
|
+
if (item.interviewType !== null)
|
|
85
|
+
lines.push(` Type: ${item.interviewType}`);
|
|
86
|
+
if (item.interviewTime !== null)
|
|
87
|
+
lines.push(` Time: ${item.interviewTime}`);
|
|
88
|
+
if (item.updatedAt !== null)
|
|
89
|
+
lines.push(` Updated: ${item.updatedAt}`);
|
|
90
|
+
// Scheduling block — always rendered (the slot list is core to the
|
|
91
|
+
// "what is this interview" question). Per-line null guards keep the
|
|
92
|
+
// block concise when the wire returns sparse data.
|
|
93
|
+
const hasSchedulingDetail = item.initiator !== null ||
|
|
94
|
+
item.scheduledAtTimes.length > 0 ||
|
|
95
|
+
(item.schedulingComment !== null && item.schedulingComment !== "");
|
|
96
|
+
if (hasSchedulingDetail) {
|
|
97
|
+
lines.push("");
|
|
98
|
+
lines.push("Scheduling");
|
|
99
|
+
if (item.initiator !== null)
|
|
100
|
+
lines.push(` Initiator: ${item.initiator}`);
|
|
101
|
+
if (item.scheduledAtTimes.length > 0) {
|
|
102
|
+
lines.push(` Proposed slots:`);
|
|
103
|
+
for (const slot of item.scheduledAtTimes) {
|
|
104
|
+
lines.push(` - ${slot}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (item.schedulingComment !== null && item.schedulingComment !== "") {
|
|
108
|
+
lines.push(` Comment: ${item.schedulingComment}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (item.method !== null) {
|
|
112
|
+
lines.push("");
|
|
113
|
+
lines.push("Method");
|
|
114
|
+
if (item.method.typeV2 !== null)
|
|
115
|
+
lines.push(` Type: ${item.method.typeV2}`);
|
|
116
|
+
if (item.method.resource !== null && item.method.resource !== "") {
|
|
117
|
+
lines.push(` Resource: ${item.method.resource}`);
|
|
118
|
+
}
|
|
119
|
+
if (item.method.conferenceUrl !== null && item.method.conferenceUrl !== "") {
|
|
120
|
+
lines.push(` Conference: ${item.method.conferenceUrl}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (item.information !== null && item.information !== "") {
|
|
124
|
+
lines.push("");
|
|
125
|
+
lines.push("Information");
|
|
126
|
+
for (const para of item.information.split(/\n+/)) {
|
|
127
|
+
if (para.trim().length > 0)
|
|
128
|
+
lines.push(` ${para}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (item.contacts.length > 0) {
|
|
132
|
+
lines.push("");
|
|
133
|
+
lines.push("Contacts");
|
|
134
|
+
for (const c of item.contacts) {
|
|
135
|
+
const headerBits = [];
|
|
136
|
+
if (c.main === true)
|
|
137
|
+
headerBits.push("(main)");
|
|
138
|
+
if (c.fullName !== null && c.fullName !== "")
|
|
139
|
+
headerBits.push(c.fullName);
|
|
140
|
+
if (c.position !== null && c.position !== "")
|
|
141
|
+
headerBits.push(`— ${c.position}`);
|
|
142
|
+
// Fall back to the id when neither main flag nor fullName is
|
|
143
|
+
// populated — every contact has at least an id on the wire.
|
|
144
|
+
lines.push(` ${headerBits.length > 0 ? headerBits.join(" ") : c.id}`);
|
|
145
|
+
if (c.email !== null && c.email !== "")
|
|
146
|
+
lines.push(` Email: ${c.email}`);
|
|
147
|
+
if (c.phoneNumber !== null && c.phoneNumber !== "")
|
|
148
|
+
lines.push(` Phone: ${c.phoneNumber}`);
|
|
149
|
+
if (c.timeZone !== null) {
|
|
150
|
+
const tzBits = [];
|
|
151
|
+
if (c.timeZone.location !== null && c.timeZone.location !== "")
|
|
152
|
+
tzBits.push(c.timeZone.location);
|
|
153
|
+
if (c.timeZone.value !== null && c.timeZone.value !== "")
|
|
154
|
+
tzBits.push(`(${c.timeZone.value})`);
|
|
155
|
+
if (tzBits.length > 0)
|
|
156
|
+
lines.push(` TimeZone: ${tzBits.join(" ")}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (item.talentNotes.length > 0) {
|
|
161
|
+
lines.push("");
|
|
162
|
+
lines.push("Notes");
|
|
163
|
+
for (const n of item.talentNotes) {
|
|
164
|
+
const section = n.section !== null && n.section !== "" ? `[${n.section}] ` : "";
|
|
165
|
+
const note = n.note ?? "";
|
|
166
|
+
lines.push(` ${section}${note}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (item.job !== null) {
|
|
170
|
+
lines.push("");
|
|
171
|
+
lines.push("Job");
|
|
172
|
+
lines.push(` Job id: ${item.job.id}`);
|
|
173
|
+
if (item.job.activityItemId !== null) {
|
|
174
|
+
lines.push(` Activity id: ${item.job.activityItemId}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (item.guideId !== null) {
|
|
178
|
+
lines.push("");
|
|
179
|
+
lines.push("Prep guide");
|
|
180
|
+
lines.push(` ID: ${item.guideId}`);
|
|
181
|
+
}
|
|
182
|
+
return lines.join("\n");
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Action handler for `ttctl applications interview notes show <jobId>` (#440).
|
|
186
|
+
* Read-only fetch of the talent's prep notes for the interview attached
|
|
187
|
+
* to a given job, via the portal-side `GetInterviewNotes` query.
|
|
188
|
+
*
|
|
189
|
+
* **Input is the JOB id, not the interview id** — the wire op takes
|
|
190
|
+
* `$jobId: ID!` and traverses `viewer.job(id).activityItem.interview`.
|
|
191
|
+
* Discover the job id via `ttctl applications interview show
|
|
192
|
+
* <interviewId>` (the `Job → Job id` line surfaced by the #439
|
|
193
|
+
* projection) or `ttctl applications show <activityId>`.
|
|
194
|
+
*
|
|
195
|
+
* Pretty rendering groups the notes by section header (the
|
|
196
|
+
* `InterviewGuideSectionIdentifierEnum` member) and falls back to
|
|
197
|
+
* unsectioned bullets for null-section notes. Empty-notes results
|
|
198
|
+
* render a single-line `(no prep notes)` message rather than blank
|
|
199
|
+
* output.
|
|
200
|
+
*
|
|
201
|
+
* `json` / `yaml` always emit the full
|
|
202
|
+
* {@link applications.InterviewNotesProjection} — machine consumers
|
|
203
|
+
* project as needed.
|
|
204
|
+
*/
|
|
205
|
+
export async function runApplicationsInterviewNotesShow(jobId, output) {
|
|
206
|
+
const token = await loadAuthTokenOrExit("applications interview notes show", output);
|
|
207
|
+
let item;
|
|
208
|
+
try {
|
|
209
|
+
item = await applications.interviews.notes.show(token, jobId);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
handleApplicationsError("applications interview notes show", err, output);
|
|
213
|
+
}
|
|
214
|
+
emitResult(item, output, {
|
|
215
|
+
pretty: (data) => formatInterviewNotes(data),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Render an {@link applications.InterviewNotesProjection} as a sectioned
|
|
220
|
+
* multi-line block. Pure — directly unit-testable.
|
|
221
|
+
*
|
|
222
|
+
* Layout:
|
|
223
|
+
*
|
|
224
|
+
* Interview notes for job <jobId>
|
|
225
|
+
* Interview id: <interviewId> // omitted if null
|
|
226
|
+
* Interview kind: <interviewKind> // omitted if null
|
|
227
|
+
*
|
|
228
|
+
* Notes
|
|
229
|
+
* [<section>] <note> // grouped by section
|
|
230
|
+
*
|
|
231
|
+
* When the job has no attached interview, prints:
|
|
232
|
+
*
|
|
233
|
+
* Interview notes for job <jobId>
|
|
234
|
+
* (no interview attached to this job)
|
|
235
|
+
*
|
|
236
|
+
* When the interview has no prep notes, prints:
|
|
237
|
+
*
|
|
238
|
+
* Interview notes for job <jobId>
|
|
239
|
+
* Interview id: <interviewId>
|
|
240
|
+
* ...
|
|
241
|
+
* (no prep notes)
|
|
242
|
+
*/
|
|
243
|
+
export function formatInterviewNotes(item) {
|
|
244
|
+
const lines = [];
|
|
245
|
+
lines.push(`Interview notes for job ${item.jobId}`);
|
|
246
|
+
if (item.interviewId === null) {
|
|
247
|
+
lines.push(" (no interview attached to this job)");
|
|
248
|
+
return lines.join("\n");
|
|
249
|
+
}
|
|
250
|
+
lines.push(` Interview id: ${item.interviewId}`);
|
|
251
|
+
if (item.interviewKind !== null) {
|
|
252
|
+
lines.push(` Interview kind: ${item.interviewKind}`);
|
|
253
|
+
}
|
|
254
|
+
if (item.notes.length === 0) {
|
|
255
|
+
lines.push("");
|
|
256
|
+
lines.push(" (no prep notes)");
|
|
257
|
+
return lines.join("\n");
|
|
258
|
+
}
|
|
259
|
+
lines.push("");
|
|
260
|
+
lines.push("Notes");
|
|
261
|
+
for (const n of item.notes) {
|
|
262
|
+
const section = n.section !== null && n.section !== "" ? `[${n.section}] ` : "";
|
|
263
|
+
const note = n.note ?? "";
|
|
264
|
+
lines.push(` ${section}${note}`);
|
|
265
|
+
}
|
|
266
|
+
return lines.join("\n");
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Action handler for `ttctl applications interview guide show <interviewId>` (#470).
|
|
270
|
+
* Read-only fetch of the interview-prep guide content (sections + tips)
|
|
271
|
+
* for one interview, via the mobile-gateway `InterviewGuide` query.
|
|
272
|
+
*
|
|
273
|
+
* **Input is the INTERVIEW id**, not the guide id. The wire op takes
|
|
274
|
+
* `$interviewId: ID!` and traverses `viewer.interview(id).guide`.
|
|
275
|
+
* Discover via `ttctl applications interview show <interviewId>` or
|
|
276
|
+
* `ttctl applications show <activityId>` (the `Interview: <id>` line).
|
|
277
|
+
*
|
|
278
|
+
* Pretty rendering groups tips under their section headers
|
|
279
|
+
* (identifier + title + subtitle). Each tip renders as a labeled
|
|
280
|
+
* sub-block with `Tip:` / `Content:` / `Template:` lines; the
|
|
281
|
+
* `hardcodedContent` label is "Template" to disambiguate from
|
|
282
|
+
* `content` (which is the talent/job-personalized body the guide
|
|
283
|
+
* pipeline splices in). Empty-guide results render a single-line
|
|
284
|
+
* `(no guide attached to this interview)` message rather than blank
|
|
285
|
+
* output.
|
|
286
|
+
*
|
|
287
|
+
* `json` / `yaml` always emit the full
|
|
288
|
+
* {@link applications.InterviewGuideProjection} — machine consumers
|
|
289
|
+
* project as needed.
|
|
290
|
+
*/
|
|
291
|
+
export async function runApplicationsInterviewGuideShow(interviewId, output) {
|
|
292
|
+
const token = await loadAuthTokenOrExit("applications interview guide show", output);
|
|
293
|
+
let item;
|
|
294
|
+
try {
|
|
295
|
+
item = await applications.interviews.guide.show(token, interviewId);
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
handleApplicationsError("applications interview guide show", err, output);
|
|
299
|
+
}
|
|
300
|
+
emitResult(item, output, {
|
|
301
|
+
pretty: (data) => formatInterviewGuide(data),
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Render an {@link applications.InterviewGuideProjection} as a sectioned
|
|
306
|
+
* multi-line block. Pure — directly unit-testable.
|
|
307
|
+
*
|
|
308
|
+
* Layout:
|
|
309
|
+
*
|
|
310
|
+
* Interview guide for interview <interviewId>
|
|
311
|
+
* Guide id: <guideId> // omitted if null
|
|
312
|
+
*
|
|
313
|
+
* [<identifier>] <title> // section header; falls back to identifier-only
|
|
314
|
+
* <subtitle> // omitted if null/empty
|
|
315
|
+
*
|
|
316
|
+
* • <tipIdentifier> — <tipTitle> // tip header; falls back to identifier-only
|
|
317
|
+
* Content:
|
|
318
|
+
* <multi-line content, indented>
|
|
319
|
+
* Template:
|
|
320
|
+
* <multi-line hardcodedContent, indented>
|
|
321
|
+
*
|
|
322
|
+
* When no guide is attached, prints:
|
|
323
|
+
*
|
|
324
|
+
* Interview guide for interview <interviewId>
|
|
325
|
+
* (no guide attached to this interview)
|
|
326
|
+
*/
|
|
327
|
+
export function formatInterviewGuide(item) {
|
|
328
|
+
const lines = [];
|
|
329
|
+
lines.push(`Interview guide for interview ${item.interviewId}`);
|
|
330
|
+
if (item.guideId === null) {
|
|
331
|
+
lines.push(" (no guide attached to this interview)");
|
|
332
|
+
return lines.join("\n");
|
|
333
|
+
}
|
|
334
|
+
lines.push(` Guide id: ${item.guideId}`);
|
|
335
|
+
if (item.sections.length === 0) {
|
|
336
|
+
lines.push("");
|
|
337
|
+
lines.push(" (guide has no sections)");
|
|
338
|
+
return lines.join("\n");
|
|
339
|
+
}
|
|
340
|
+
for (const section of item.sections) {
|
|
341
|
+
lines.push("");
|
|
342
|
+
// Section header — falls back to identifier-only when title is null,
|
|
343
|
+
// and to a literal "(unnamed section)" when both are null.
|
|
344
|
+
const sectionHeader = sectionHeaderLine(section);
|
|
345
|
+
lines.push(sectionHeader);
|
|
346
|
+
if (section.subtitle !== null && section.subtitle !== "") {
|
|
347
|
+
lines.push(` ${section.subtitle}`);
|
|
348
|
+
}
|
|
349
|
+
if (section.tips.length === 0) {
|
|
350
|
+
lines.push(" (no tips)");
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
for (const tip of section.tips) {
|
|
354
|
+
lines.push("");
|
|
355
|
+
lines.push(` ${tipHeaderLine(tip)}`);
|
|
356
|
+
if (tip.content !== null && tip.content !== "") {
|
|
357
|
+
lines.push(` Content:`);
|
|
358
|
+
for (const para of tip.content.split(/\n/)) {
|
|
359
|
+
lines.push(` ${para}`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (tip.hardcodedContent !== null && tip.hardcodedContent !== "") {
|
|
363
|
+
lines.push(` Template:`);
|
|
364
|
+
for (const para of tip.hardcodedContent.split(/\n/)) {
|
|
365
|
+
lines.push(` ${para}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return lines.join("\n");
|
|
371
|
+
}
|
|
372
|
+
function sectionHeaderLine(section) {
|
|
373
|
+
if (section.identifier !== null && section.title !== null && section.title !== "") {
|
|
374
|
+
return `[${section.identifier}] ${section.title}`;
|
|
375
|
+
}
|
|
376
|
+
if (section.identifier !== null) {
|
|
377
|
+
return `[${section.identifier}]`;
|
|
378
|
+
}
|
|
379
|
+
if (section.title !== null && section.title !== "") {
|
|
380
|
+
return section.title;
|
|
381
|
+
}
|
|
382
|
+
return "(unnamed section)";
|
|
383
|
+
}
|
|
384
|
+
function tipHeaderLine(tip) {
|
|
385
|
+
if (tip.identifier !== null && tip.title !== null && tip.title !== "") {
|
|
386
|
+
return `• ${tip.identifier} — ${tip.title}`;
|
|
387
|
+
}
|
|
388
|
+
if (tip.identifier !== null) {
|
|
389
|
+
return `• ${tip.identifier}`;
|
|
390
|
+
}
|
|
391
|
+
if (tip.title !== null && tip.title !== "") {
|
|
392
|
+
return `• ${tip.title}`;
|
|
393
|
+
}
|
|
394
|
+
return "• (unnamed tip)";
|
|
395
|
+
}
|
|
396
|
+
//# sourceMappingURL=interview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../../src/commands/applications/interview.ts"],"names":[],"mappings":"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"}
|