thinking-phrases 1.0.1

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.
Files changed (44) hide show
  1. package/README.md +370 -0
  2. package/bin/thinking-phrases.ts +8 -0
  3. package/configs/hn-top.config.json +83 -0
  4. package/launchd/com.austenstone.thinking-phrases.rss.plist +29 -0
  5. package/launchd/rss-update.error.log +27 -0
  6. package/launchd/rss-update.log +0 -0
  7. package/package.json +66 -0
  8. package/scripts/build.ts +96 -0
  9. package/scripts/install-rss-updater.zsh +69 -0
  10. package/scripts/run-rss-update.zsh +16 -0
  11. package/scripts/uninstall-rss-updater.zsh +11 -0
  12. package/scripts/update-rss-settings.ts +7 -0
  13. package/src/core/config.ts +704 -0
  14. package/src/core/githubModels.ts +208 -0
  15. package/src/core/interactive.ts +1053 -0
  16. package/src/core/presets.ts +77 -0
  17. package/src/core/runner.ts +375 -0
  18. package/src/core/scheduler.ts +84 -0
  19. package/src/core/sourceCatalog.ts +18 -0
  20. package/src/core/staticPacks.ts +66 -0
  21. package/src/core/types.ts +177 -0
  22. package/src/core/utils.ts +312 -0
  23. package/src/sinks/vscodeSettings.ts +44 -0
  24. package/src/sources/customJson.ts +174 -0
  25. package/src/sources/earthquakes.ts +100 -0
  26. package/src/sources/githubActivity.ts +598 -0
  27. package/src/sources/hackerNews.ts +75 -0
  28. package/src/sources/rss.ts +256 -0
  29. package/src/sources/stocks.ts +120 -0
  30. package/src/sources/weatherAlerts.ts +111 -0
  31. package/tips/dwyl-quotes.json +1616 -0
  32. package/tips/javascript-tips.json +102 -0
  33. package/tips/league-loading-screen-tips.json +102 -0
  34. package/tips/ruby-tips.json +110 -0
  35. package/tips/typescript-tips.json +126 -0
  36. package/tips/vscode/copilot.json +77 -0
  37. package/tips/vscode/debugging.json +37 -0
  38. package/tips/vscode/editor.json +52 -0
  39. package/tips/vscode/funny.json +42 -0
  40. package/tips/vscode/git.json +42 -0
  41. package/tips/vscode/shortcuts.json +127 -0
  42. package/tips/vscode/terminal.json +37 -0
  43. package/tips/wow-loading-screen-tips.json +111 -0
  44. package/tsconfig.json +15 -0
@@ -0,0 +1,69 @@
1
+ #!/bin/zsh
2
+ set -euo pipefail
3
+
4
+ SCRIPT_DIR="${0:A:h}"
5
+ REPO_DIR="${SCRIPT_DIR:h}"
6
+ DEFAULT_INTERVAL=3600
7
+ INTERVAL_SECONDS="${1:-$DEFAULT_INTERVAL}"
8
+ CONFIG_PATH="${2:-}"
9
+ PLIST_SOURCE="$REPO_DIR/launchd/com.austenstone.thinking-phrases.rss.plist"
10
+ LAUNCH_AGENTS_DIR="$HOME/Library/LaunchAgents"
11
+ PLIST_DEST="$LAUNCH_AGENTS_DIR/com.austenstone.thinking-phrases.rss.plist"
12
+ LABEL="com.austenstone.thinking-phrases.rss"
13
+ OLD_PLIST_DEST="$LAUNCH_AGENTS_DIR/com.austenstone.thinking-phrases.news.plist"
14
+
15
+ if [[ $# -gt 2 ]]; then
16
+ echo "Usage: $0 [interval-seconds] [config-path]" >&2
17
+ exit 1
18
+ fi
19
+
20
+ if [[ ! "$INTERVAL_SECONDS" =~ '^[0-9]+$' ]] || (( INTERVAL_SECONDS <= 0 )); then
21
+ echo "Installer failed: interval must be a positive integer in seconds. Received: $INTERVAL_SECONDS" >&2
22
+ exit 1
23
+ fi
24
+
25
+ if [[ ! -f "$PLIST_SOURCE" ]]; then
26
+ echo "Installer failed: plist not found at $PLIST_SOURCE" >&2
27
+ exit 1
28
+ fi
29
+
30
+ if [[ -n "$CONFIG_PATH" ]]; then
31
+ if [[ "$CONFIG_PATH" == ~/* ]]; then
32
+ CONFIG_PATH="$HOME/${CONFIG_PATH#~/}"
33
+ elif [[ "$CONFIG_PATH" != /* ]]; then
34
+ CONFIG_PATH="$REPO_DIR/$CONFIG_PATH"
35
+ fi
36
+
37
+ if [[ ! -f "$CONFIG_PATH" ]]; then
38
+ echo "Installer failed: config not found at $CONFIG_PATH" >&2
39
+ exit 1
40
+ fi
41
+ fi
42
+
43
+ mkdir -p "$LAUNCH_AGENTS_DIR"
44
+ chmod +x "$REPO_DIR/scripts/run-rss-update.zsh"
45
+ cp "$PLIST_SOURCE" "$PLIST_DEST"
46
+ /usr/libexec/PlistBuddy -c "Set :StartInterval $INTERVAL_SECONDS" "$PLIST_DEST"
47
+
48
+ if [[ -n "$CONFIG_PATH" ]]; then
49
+ /usr/libexec/PlistBuddy -c "Add :EnvironmentVariables dict" "$PLIST_DEST" >/dev/null 2>&1 || true
50
+ /usr/libexec/PlistBuddy -c "Delete :EnvironmentVariables:THINKING_PHRASES_CONFIG" "$PLIST_DEST" >/dev/null 2>&1 || true
51
+ /usr/libexec/PlistBuddy -c "Add :EnvironmentVariables:THINKING_PHRASES_CONFIG string $CONFIG_PATH" "$PLIST_DEST"
52
+ else
53
+ /usr/libexec/PlistBuddy -c "Delete :EnvironmentVariables:THINKING_PHRASES_CONFIG" "$PLIST_DEST" >/dev/null 2>&1 || true
54
+ fi
55
+
56
+ launchctl unload "$OLD_PLIST_DEST" >/dev/null 2>&1 || true
57
+ rm -f "$OLD_PLIST_DEST"
58
+ launchctl unload "$PLIST_DEST" >/dev/null 2>&1 || true
59
+ launchctl load "$PLIST_DEST"
60
+
61
+ echo "Installed LaunchAgent: $LABEL"
62
+ echo "Plist: $PLIST_DEST"
63
+ echo "Run script: $REPO_DIR/scripts/run-rss-update.zsh"
64
+ echo "Schedule: launchd StartInterval=$INTERVAL_SECONDS"
65
+ if [[ -n "$CONFIG_PATH" ]]; then
66
+ echo "Config: $CONFIG_PATH"
67
+ fi
68
+ echo
69
+ launchctl list | grep "$LABEL" || echo "LaunchAgent loaded, but not currently shown in launchctl list output."
@@ -0,0 +1,16 @@
1
+ #!/bin/zsh
2
+ set -euo pipefail
3
+
4
+ REPO_DIR="/Users/austenstone/source/vscode-copilot-tips"
5
+
6
+ cd "$REPO_DIR"
7
+
8
+ if [[ -f "$HOME/.zshrc" ]]; then
9
+ source "$HOME/.zshrc"
10
+ fi
11
+
12
+ if [[ -n "${THINKING_PHRASES_CONFIG:-}" ]]; then
13
+ npm run rss:run -- --config "$THINKING_PHRASES_CONFIG"
14
+ else
15
+ npm run rss:run
16
+ fi
@@ -0,0 +1,11 @@
1
+ #!/bin/zsh
2
+ set -euo pipefail
3
+
4
+ PLIST_DEST="$HOME/Library/LaunchAgents/com.austenstone.thinking-phrases.rss.plist"
5
+ OLD_PLIST_DEST="$HOME/Library/LaunchAgents/com.austenstone.thinking-phrases.news.plist"
6
+
7
+ launchctl unload "$PLIST_DEST" >/dev/null 2>&1 || true
8
+ launchctl unload "$OLD_PLIST_DEST" >/dev/null 2>&1 || true
9
+ rm -f "$PLIST_DEST" "$OLD_PLIST_DEST"
10
+
11
+ echo "Uninstalled LaunchAgent: com.austenstone.thinking-phrases.rss"
@@ -0,0 +1,7 @@
1
+ import { runDynamicPhrases } from '../src/core/runner.ts';
2
+
3
+ runDynamicPhrases().catch((error: unknown) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ console.error(`thinking-phrases: ${message}`);
6
+ process.exit(1);
7
+ });