@steipete/oracle 0.8.6 → 0.10.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 +1 -1
- package/README.md +130 -45
- package/dist/bin/oracle-cli.js +613 -379
- package/dist/bin/oracle-mcp.js +2 -2
- package/dist/bin/oracle.js +165 -279
- package/dist/scripts/agent-send.js +31 -31
- package/dist/scripts/check.js +6 -6
- package/dist/scripts/debug/extract-chatgpt-response.js +10 -10
- package/dist/scripts/docs-list.js +30 -30
- package/dist/scripts/git-policy.js +25 -23
- package/dist/scripts/run-cli.js +8 -8
- package/dist/scripts/runner.js +203 -195
- package/dist/scripts/test-browser.js +21 -18
- package/dist/scripts/test-remote-chrome.js +20 -20
- package/dist/src/bridge/connection.js +18 -18
- package/dist/src/bridge/userConfigFile.js +7 -7
- package/dist/src/browser/actions/assistantResponse.js +149 -101
- package/dist/src/browser/actions/attachmentDataTransfer.js +49 -47
- package/dist/src/browser/actions/attachments.js +246 -150
- package/dist/src/browser/actions/domEvents.js +2 -2
- package/dist/src/browser/actions/modelSelection.js +314 -104
- package/dist/src/browser/actions/navigation.js +161 -136
- package/dist/src/browser/actions/promptComposer.js +100 -64
- package/dist/src/browser/actions/remoteFileTransfer.js +10 -10
- package/dist/src/browser/actions/thinkingTime.js +207 -110
- package/dist/src/browser/chromeLifecycle.js +62 -60
- package/dist/src/browser/config.js +34 -15
- package/dist/src/browser/constants.js +17 -12
- package/dist/src/browser/cookies.js +19 -19
- package/dist/src/browser/detect.js +62 -62
- package/dist/src/browser/domDebug.js +1 -1
- package/dist/src/browser/index.js +452 -303
- package/dist/src/browser/modelStrategy.js +1 -1
- package/dist/src/browser/pageActions.js +5 -5
- package/dist/src/browser/policies.js +16 -13
- package/dist/src/browser/profileState.js +44 -39
- package/dist/src/browser/prompt.js +72 -42
- package/dist/src/browser/promptSummary.js +5 -5
- package/dist/src/browser/providerDomFlow.js +17 -0
- package/dist/src/browser/providers/chatgptDomProvider.js +49 -0
- package/dist/src/browser/providers/geminiDeepThinkDomProvider.js +254 -0
- package/dist/src/browser/providers/index.js +2 -0
- package/dist/src/browser/reattach.js +67 -34
- package/dist/src/browser/reattachHelpers.js +31 -26
- package/dist/src/browser/sessionRunner.js +37 -25
- package/dist/src/browser/utils.js +9 -9
- package/dist/src/browserMode.js +1 -1
- package/dist/src/cli/bridge/claudeConfig.js +16 -16
- package/dist/src/cli/bridge/client.js +28 -20
- package/dist/src/cli/bridge/codexConfig.js +16 -16
- package/dist/src/cli/bridge/doctor.js +47 -39
- package/dist/src/cli/bridge/host.js +58 -56
- package/dist/src/cli/browserConfig.js +65 -45
- package/dist/src/cli/browserDefaults.js +27 -26
- package/dist/src/cli/bundleWarnings.js +1 -1
- package/dist/src/cli/clipboard.js +11 -2
- package/dist/src/cli/detach.js +7 -4
- package/dist/src/cli/dryRun.js +29 -25
- package/dist/src/cli/duplicatePromptGuard.js +3 -3
- package/dist/src/cli/engine.js +9 -9
- package/dist/src/cli/errorUtils.js +1 -1
- package/dist/src/cli/fileSize.js +11 -0
- package/dist/src/cli/format.js +2 -2
- package/dist/src/cli/help.js +28 -28
- package/dist/src/cli/hiddenAliases.js +3 -3
- package/dist/src/cli/markdownBundle.js +12 -8
- package/dist/src/cli/markdownRenderer.js +15 -15
- package/dist/src/cli/notifier.js +77 -67
- package/dist/src/cli/options.js +145 -87
- package/dist/src/cli/oscUtils.js +1 -1
- package/dist/src/cli/promptRequirement.js +2 -2
- package/dist/src/cli/renderOutput.js +1 -1
- package/dist/src/cli/rootAlias.js +1 -1
- package/dist/src/cli/runOptions.js +37 -25
- package/dist/src/cli/sessionCommand.js +31 -21
- package/dist/src/cli/sessionDisplay.js +182 -79
- package/dist/src/cli/sessionLineage.js +60 -0
- package/dist/src/cli/sessionRunner.js +118 -90
- package/dist/src/cli/sessionTable.js +28 -24
- package/dist/src/cli/stdin.js +22 -0
- package/dist/src/cli/tagline.js +121 -124
- package/dist/src/cli/tui/index.js +140 -127
- package/dist/src/cli/writeOutputPath.js +5 -5
- package/dist/src/config.js +7 -7
- package/dist/src/gemini-web/browserSessionManager.js +80 -0
- package/dist/src/gemini-web/client.js +81 -64
- package/dist/src/gemini-web/executionMode.js +16 -0
- package/dist/src/gemini-web/executor.js +327 -169
- package/dist/src/gemini-web/index.js +1 -1
- package/dist/src/mcp/server.js +16 -12
- package/dist/src/mcp/tools/consult.js +81 -64
- package/dist/src/mcp/tools/sessionResources.js +12 -12
- package/dist/src/mcp/tools/sessions.js +26 -17
- package/dist/src/mcp/types.js +5 -5
- package/dist/src/mcp/utils.js +15 -7
- package/dist/src/oracle/background.js +15 -15
- package/dist/src/oracle/claude.js +53 -25
- package/dist/src/oracle/client.js +84 -46
- package/dist/src/oracle/config.js +124 -58
- package/dist/src/oracle/errors.js +38 -38
- package/dist/src/oracle/files.js +69 -45
- package/dist/src/oracle/finishLine.js +10 -8
- package/dist/src/oracle/format.js +3 -3
- package/dist/src/oracle/gemini.js +37 -30
- package/dist/src/oracle/logging.js +7 -7
- package/dist/src/oracle/markdown.js +28 -28
- package/dist/src/oracle/modelResolver.js +16 -16
- package/dist/src/oracle/multiModelRunner.js +12 -12
- package/dist/src/oracle/oscProgress.js +8 -8
- package/dist/src/oracle/promptAssembly.js +6 -3
- package/dist/src/oracle/request.js +23 -15
- package/dist/src/oracle/run.js +172 -140
- package/dist/src/oracle/runUtils.js +8 -5
- package/dist/src/oracle/tokenEstimate.js +6 -6
- package/dist/src/oracle/tokenStats.js +5 -5
- package/dist/src/oracle/tokenStringifier.js +5 -5
- package/dist/src/oracle.js +12 -12
- package/dist/src/oracleHome.js +3 -3
- package/dist/src/remote/client.js +25 -25
- package/dist/src/remote/health.js +20 -20
- package/dist/src/remote/remoteServiceConfig.js +9 -9
- package/dist/src/remote/server.js +129 -118
- package/dist/src/sessionManager.js +81 -75
- package/dist/src/sessionStore.js +3 -3
- package/dist/src/version.js +10 -10
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/CodeResources +0 -0
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/MacOS/OracleNotifier +0 -0
- package/dist/vendor/oracle-notifier/README.md +2 -0
- package/package.json +69 -65
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/CodeResources +0 -0
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/MacOS/OracleNotifier +0 -0
- package/vendor/oracle-notifier/README.md +2 -0
- package/dist/markdansi/types/index.js +0 -4
- package/dist/oracle/bin/oracle-cli.js +0 -472
- package/dist/oracle/src/browser/actions/assistantResponse.js +0 -471
- package/dist/oracle/src/browser/actions/attachments.js +0 -82
- package/dist/oracle/src/browser/actions/modelSelection.js +0 -190
- package/dist/oracle/src/browser/actions/navigation.js +0 -75
- package/dist/oracle/src/browser/actions/promptComposer.js +0 -167
- package/dist/oracle/src/browser/chromeLifecycle.js +0 -104
- package/dist/oracle/src/browser/config.js +0 -33
- package/dist/oracle/src/browser/constants.js +0 -40
- package/dist/oracle/src/browser/cookies.js +0 -210
- package/dist/oracle/src/browser/domDebug.js +0 -36
- package/dist/oracle/src/browser/index.js +0 -331
- package/dist/oracle/src/browser/pageActions.js +0 -5
- package/dist/oracle/src/browser/prompt.js +0 -88
- package/dist/oracle/src/browser/promptSummary.js +0 -20
- package/dist/oracle/src/browser/sessionRunner.js +0 -80
- package/dist/oracle/src/browser/utils.js +0 -62
- package/dist/oracle/src/browserMode.js +0 -1
- package/dist/oracle/src/cli/browserConfig.js +0 -44
- package/dist/oracle/src/cli/dryRun.js +0 -59
- package/dist/oracle/src/cli/engine.js +0 -17
- package/dist/oracle/src/cli/errorUtils.js +0 -9
- package/dist/oracle/src/cli/help.js +0 -70
- package/dist/oracle/src/cli/markdownRenderer.js +0 -15
- package/dist/oracle/src/cli/options.js +0 -103
- package/dist/oracle/src/cli/promptRequirement.js +0 -14
- package/dist/oracle/src/cli/rootAlias.js +0 -30
- package/dist/oracle/src/cli/sessionCommand.js +0 -77
- package/dist/oracle/src/cli/sessionDisplay.js +0 -270
- package/dist/oracle/src/cli/sessionRunner.js +0 -94
- package/dist/oracle/src/heartbeat.js +0 -43
- package/dist/oracle/src/oracle/client.js +0 -48
- package/dist/oracle/src/oracle/config.js +0 -29
- package/dist/oracle/src/oracle/errors.js +0 -101
- package/dist/oracle/src/oracle/files.js +0 -220
- package/dist/oracle/src/oracle/format.js +0 -33
- package/dist/oracle/src/oracle/fsAdapter.js +0 -7
- package/dist/oracle/src/oracle/oscProgress.js +0 -60
- package/dist/oracle/src/oracle/request.js +0 -48
- package/dist/oracle/src/oracle/run.js +0 -444
- package/dist/oracle/src/oracle/tokenStats.js +0 -39
- package/dist/oracle/src/oracle/types.js +0 -1
- package/dist/oracle/src/oracle.js +0 -9
- package/dist/oracle/src/sessionManager.js +0 -205
- package/dist/oracle/src/version.js +0 -39
- package/dist/scripts/chrome/browser-tools.js +0 -295
- package/dist/src/browser/profileSync.js +0 -141
- /package/dist/{oracle/src/browser/types.js → src/gemini-web/executionClients.js} +0 -0
package/dist/src/cli/tagline.js
CHANGED
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
import chalk from
|
|
1
|
+
import chalk from "chalk";
|
|
2
2
|
const TAGLINES = [
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
3
|
+
"Whispering your tokens to the silicon sage.",
|
|
4
|
+
"Turning scattered files into one sharp question.",
|
|
5
|
+
"One slug to gather them all.",
|
|
6
|
+
"Token thrift, oracle lift.",
|
|
7
|
+
"Globs to gospel, minus the incense.",
|
|
8
|
+
"Your repo, neatly bottled, gently shaken.",
|
|
9
|
+
"Clarity, with a hint of smoke.",
|
|
10
|
+
"Questions in, clarity out.",
|
|
11
|
+
"Globs become guidance.",
|
|
12
|
+
"Token-aware, omen-ready.",
|
|
13
|
+
"Globs go in; citations and costs come out.",
|
|
14
|
+
"Keeps 196k tokens feeling roomy, not risky.",
|
|
15
|
+
"Remembers your paths, forgets your past runs.",
|
|
16
|
+
"A TUI when you want it, a one-liner when you do not.",
|
|
17
|
+
"Less ceremony, more certainty.",
|
|
18
|
+
"Guidance without the guesswork.",
|
|
19
|
+
"One prompt fanned out, no echoes wasted.",
|
|
20
|
+
"Detached runs, tethered results.",
|
|
21
|
+
"Calm CLI, loud answers.",
|
|
22
|
+
"Single scroll, many seers.",
|
|
23
|
+
"Background magic with foreground receipts.",
|
|
24
|
+
"Paths aligned, models attuned.",
|
|
25
|
+
"Light spell, heavy insight.",
|
|
26
|
+
"Signal first, sorcery second.",
|
|
27
|
+
"One command, several seers; results stay grounded.",
|
|
28
|
+
"Context braided, answers sharpened.",
|
|
29
|
+
"Short incantation, long provenance.",
|
|
30
|
+
"Attach, cast, reattach later.",
|
|
31
|
+
"Spell once, cite always.",
|
|
32
|
+
"Edge cases foretold, receipts attached.",
|
|
33
|
+
"Silent run, loud receipts.",
|
|
34
|
+
"Detours gone; clarity walks in.",
|
|
35
|
+
"Tokens tallied, omens tallied.",
|
|
36
|
+
"Calm prompt, converged truths.",
|
|
37
|
+
"Single spell, multiple verdicts.",
|
|
38
|
+
"Prompt once, harvest many omens.",
|
|
39
|
+
"Light on ceremony, heavy on receipts.",
|
|
40
|
+
"From globs to guidance in one breath.",
|
|
41
|
+
"Quiet prompt, thunderous answers.",
|
|
42
|
+
"Balanced mystique, measurable results.",
|
|
43
|
+
"Debugger by day, oracle by night.",
|
|
44
44
|
"Your code's confessional booth.",
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
"Edge cases fear this inbox.",
|
|
46
|
+
"Slop in, sharp answers out.",
|
|
47
47
|
"Your AI coworker's quality control.",
|
|
48
48
|
"Because vibes aren't a deliverable.",
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
"When the other agents shrug, the oracle ships.",
|
|
50
|
+
"Hallucinations checked at the door.",
|
|
51
|
+
"Context police for overeager LLMs.",
|
|
52
|
+
"Turns prompt spaghetti into ship-ready sauce.",
|
|
53
|
+
"Lint for large language models.",
|
|
54
54
|
"Slaps wrists before they hit 'ship'.",
|
|
55
55
|
"Because 'let the model figure it out' is not QA.",
|
|
56
56
|
"Fine, I'll write the test for the AI too.",
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
"We bring receipts; they bring excuses.",
|
|
58
|
+
"Less swagger, more citations.",
|
|
59
|
+
"LLM babysitter with a shipping agenda.",
|
|
60
|
+
"Ships facts, not vibes.",
|
|
61
|
+
"Context sanitizer for reckless prompts.",
|
|
62
|
+
"AI babysitter with merge rights.",
|
|
63
|
+
"Stops the hallucination before it hits prod.",
|
|
64
|
+
"Slop filter set to aggressive.",
|
|
65
|
+
"We debug the debugger.",
|
|
66
|
+
"Model said maybe; oracle says ship/no.",
|
|
67
|
+
"Less lorem, more logic.",
|
|
68
68
|
"Your prompt's adult supervision.",
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
"Cleanup crew for AI messes.",
|
|
70
|
+
"AI wrote it? Oracle babysits it.",
|
|
71
|
+
"Turning maybe into mergeable.",
|
|
72
|
+
"The AI said vibes; we said tests.",
|
|
73
|
+
"Cleanup crew for model-made messes—now with citations.",
|
|
74
|
+
"Less hallucination, more escalation.",
|
|
75
75
|
"Your AI's ghostwriter, but with citations.",
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
76
|
+
"Where prompt soup becomes production code.",
|
|
77
|
+
"From shruggy agents to shippable PRs.",
|
|
78
|
+
"Token mop for agent spillover.",
|
|
79
|
+
"We QA the AI so you can ship the code.",
|
|
80
|
+
"Less improv, more implementation.",
|
|
81
|
+
"Ships facts faster than agents make excuses.",
|
|
82
|
+
"From prompt chaos to PR-ready prose.",
|
|
83
83
|
"Your AI's hot take, fact-checked.",
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
"Cleanup crew for LLM loose ends.",
|
|
85
|
+
"We babysit the bot; you ship the build.",
|
|
86
|
+
"Prompt drama in; release notes out.",
|
|
87
|
+
"AI confidence filtered through reality.",
|
|
88
88
|
"From 'it told me so' to 'tests say so'.",
|
|
89
89
|
"We refactor the model's hubris before it hits prod.",
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
"Prompt chaos triaged, answers discharged.",
|
|
91
|
+
"Oracle babysits; you merge.",
|
|
92
|
+
"Vibes quarantined; facts admitted.",
|
|
93
|
+
"The cleanup crew for speculative stack traces.",
|
|
94
|
+
"Ship-ready answers, minus the AI improv.",
|
|
95
95
|
"We pre-empt the hallucination so you don't triage it at 2am.",
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
"AI confidence monitored, citations required.",
|
|
97
|
+
"Ship logs, not lore.",
|
|
98
|
+
"Hallucinations flagged, reality shipped.",
|
|
99
|
+
"We lint the lore so you can ship the code.",
|
|
100
|
+
"Hallucination hotline: we answer, not the pager.",
|
|
101
|
+
"Less mystique, more mergeability.",
|
|
102
|
+
"Slop filter set past 11.",
|
|
103
|
+
"Bottled prompt chaos, filtered answers.",
|
|
104
104
|
"Your AI's swagger, audited.",
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
"New year, same oracle: resolutions shipped, not wished.",
|
|
106
|
+
"Lunar New Year sweep: clear caches, invite good deploys.",
|
|
107
|
+
"Eid Mubarak: feast on clarity, fast from hallucinations.",
|
|
108
|
+
"Diwali: lights on, incident lights off.",
|
|
109
|
+
"Holi colors on dashboards, not in logs.",
|
|
110
110
|
"Workers' Day: let oracle haul the heavy context.",
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
111
|
+
"Earth Day: trim carbon, trim token waste.",
|
|
112
|
+
"Halloween: ship treats, not trick exceptions.",
|
|
113
|
+
"Independence Day: sparkles in the sky, not in the error console.",
|
|
114
|
+
"Christmas: all is calm, all is shipped.",
|
|
115
|
+
"Nowruz reset: sweep caches, welcome clean deploys.",
|
|
116
|
+
"Hanukkah lights, zero prod fires.",
|
|
117
|
+
"Ramadan focus: fast from scope creep, feast on clarity.",
|
|
118
|
+
"Pride Month: more color on the streets, less red in CI.",
|
|
119
|
+
"Thanksgiving: grateful for green builds, no turkey outages.",
|
|
120
|
+
"Solstice deploy: longest day, shortest incident list.",
|
|
121
121
|
];
|
|
122
122
|
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
123
123
|
function utcParts(date) {
|
|
@@ -160,9 +160,9 @@ const isFourthThursdayOfNovember = (date) => {
|
|
|
160
160
|
return parts.day === fourthThursday;
|
|
161
161
|
};
|
|
162
162
|
const HOLIDAY_RULES = new Map([
|
|
163
|
-
[
|
|
163
|
+
["New year, same oracle: resolutions shipped, not wished.", onMonthDay(0, 1)],
|
|
164
164
|
[
|
|
165
|
-
|
|
165
|
+
"Lunar New Year sweep: clear caches, invite good deploys.",
|
|
166
166
|
onSpecificDates([
|
|
167
167
|
[2025, 0, 29],
|
|
168
168
|
[2026, 1, 17],
|
|
@@ -170,7 +170,7 @@ const HOLIDAY_RULES = new Map([
|
|
|
170
170
|
], 1),
|
|
171
171
|
],
|
|
172
172
|
[
|
|
173
|
-
|
|
173
|
+
"Eid Mubarak: feast on clarity, fast from hallucinations.",
|
|
174
174
|
onSpecificDates([
|
|
175
175
|
[2025, 2, 31],
|
|
176
176
|
[2026, 2, 20],
|
|
@@ -178,7 +178,7 @@ const HOLIDAY_RULES = new Map([
|
|
|
178
178
|
], 1),
|
|
179
179
|
],
|
|
180
180
|
[
|
|
181
|
-
|
|
181
|
+
"Diwali: lights on, incident lights off.",
|
|
182
182
|
onSpecificDates([
|
|
183
183
|
[2025, 9, 20],
|
|
184
184
|
[2026, 10, 8],
|
|
@@ -186,7 +186,7 @@ const HOLIDAY_RULES = new Map([
|
|
|
186
186
|
], 1),
|
|
187
187
|
],
|
|
188
188
|
[
|
|
189
|
-
|
|
189
|
+
"Holi colors on dashboards, not in logs.",
|
|
190
190
|
onSpecificDates([
|
|
191
191
|
[2025, 2, 14],
|
|
192
192
|
[2026, 2, 3],
|
|
@@ -194,16 +194,13 @@ const HOLIDAY_RULES = new Map([
|
|
|
194
194
|
], 1),
|
|
195
195
|
],
|
|
196
196
|
["Workers' Day: let oracle haul the heavy context.", onMonthDay(4, 1)],
|
|
197
|
-
[
|
|
198
|
-
[
|
|
197
|
+
["Earth Day: trim carbon, trim token waste.", onMonthDay(3, 22)],
|
|
198
|
+
["Halloween: ship treats, not trick exceptions.", onMonthDay(9, 31)],
|
|
199
|
+
["Independence Day: sparkles in the sky, not in the error console.", onMonthDay(6, 4)],
|
|
200
|
+
["Christmas: all is calm, all is shipped.", onMonthDay(11, 25)],
|
|
201
|
+
["Nowruz reset: sweep caches, welcome clean deploys.", onMonthDay(2, 20)],
|
|
199
202
|
[
|
|
200
|
-
|
|
201
|
-
onMonthDay(6, 4),
|
|
202
|
-
],
|
|
203
|
-
['Christmas: all is calm, all is shipped.', onMonthDay(11, 25)],
|
|
204
|
-
['Nowruz reset: sweep caches, welcome clean deploys.', onMonthDay(2, 20)],
|
|
205
|
-
[
|
|
206
|
-
'Hanukkah lights, zero prod fires.',
|
|
203
|
+
"Hanukkah lights, zero prod fires.",
|
|
207
204
|
inYearWindow([
|
|
208
205
|
{ year: 2025, month: 11, day: 14, duration: 8 },
|
|
209
206
|
{ year: 2026, month: 11, day: 4, duration: 8 },
|
|
@@ -211,16 +208,16 @@ const HOLIDAY_RULES = new Map([
|
|
|
211
208
|
]),
|
|
212
209
|
],
|
|
213
210
|
[
|
|
214
|
-
|
|
211
|
+
"Ramadan focus: fast from scope creep, feast on clarity.",
|
|
215
212
|
inYearWindow([
|
|
216
213
|
{ year: 2025, month: 1, day: 28, duration: 30 },
|
|
217
214
|
{ year: 2026, month: 1, day: 17, duration: 30 },
|
|
218
215
|
{ year: 2027, month: 1, day: 7, duration: 30 },
|
|
219
216
|
]),
|
|
220
217
|
],
|
|
221
|
-
[
|
|
222
|
-
[
|
|
223
|
-
[
|
|
218
|
+
["Pride Month: more color on the streets, less red in CI.", (date) => utcParts(date).month === 5],
|
|
219
|
+
["Thanksgiving: grateful for green builds, no turkey outages.", isFourthThursdayOfNovember],
|
|
220
|
+
["Solstice deploy: longest day, shortest incident list.", onMonthDay(5, 21)],
|
|
224
221
|
]);
|
|
225
222
|
function isTaglineActive(tagline, date) {
|
|
226
223
|
const rule = HOLIDAY_RULES.get(tagline);
|
|
@@ -251,7 +248,7 @@ export function formatIntroLine(version, options = {}) {
|
|
|
251
248
|
const tagline = pickTagline(options);
|
|
252
249
|
const rich = options.richTty ?? true;
|
|
253
250
|
if (rich && chalk.level > 0) {
|
|
254
|
-
return `${chalk.bold(
|
|
251
|
+
return `${chalk.bold("🧿 oracle")} ${version} — ${tagline}`;
|
|
255
252
|
}
|
|
256
253
|
return `🧿 oracle ${version} — ${tagline}`;
|
|
257
254
|
}
|