@specship/specship-win32-arm64 0.18.1 → 0.19.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.
@@ -2163,6 +2163,7 @@ function main() {
2163
2163
  .option('--no-permissions', 'Skip writing the auto-allow permissions list')
2164
2164
  .option('--sdd', '(default) Install the spec-driven-development governance tier (spec/authoring/review/design commands + the spec-author nudge hook)')
2165
2165
  .option('--no-sdd', 'Skip the governance tier — retrieval-only install (the pre-0.18 default)')
2166
+ .option('--path <repo>', 'Target repo to wire and initialize (default: current directory). Project-local files and the .specship index land there')
2166
2167
  .option('--with-jira', 'Enable the optional JIRA integration (talks to your Atlassian instance; off by default — the core install is 100% local)')
2167
2168
  .option('--with-designer', 'Enable the optional Designer integration (EXPERIMENTAL — drives claude.ai/design via a debug Chrome session and may break without notice; off by default)')
2168
2169
  .option('--statusline', 'Wire the SpecShip status-line segment into Claude (skips the prompt; never overwrites an existing status line)')
@@ -2179,6 +2180,18 @@ function main() {
2179
2180
  process.stdout.write(claudeTarget.printConfig(loc));
2180
2181
  return;
2181
2182
  }
2183
+ // Target repo (INSTALL-SCOPE-DOC, REQ-SCOPE-002): the project-local
2184
+ // wiring and the .specship index land in --path, not wherever the
2185
+ // command happened to run. Same semantics as the bundle installer's
2186
+ // --path — implemented the same way (the local writers are cwd-based).
2187
+ if (opts.path) {
2188
+ const target = path.resolve(opts.path);
2189
+ if (!fs.existsSync(target) || !fs.statSync(target).isDirectory()) {
2190
+ error(`--path '${opts.path}' is not a directory`);
2191
+ process.exit(1);
2192
+ }
2193
+ process.chdir(target);
2194
+ }
2182
2195
  const { runInstallerWithOptions } = await Promise.resolve().then(() => __importStar(require('../installer')));
2183
2196
  if (opts.location && opts.location !== 'global' && opts.location !== 'local') {
2184
2197
  error(`--location must be "global" or "local" (got "${opts.location}").`);
@@ -3083,6 +3096,8 @@ function main() {
3083
3096
  .option('--api-token <token>', 'Cloud: API token (paired with --email)')
3084
3097
  .option('--pat <token>', 'Data Center: personal access token')
3085
3098
  .option('--deployment <kind>', 'Deployment kind: "cloud" or "datacenter" (inferred if omitted)')
3099
+ .option('--ca-cert <pem>', 'Path to a PEM CA bundle for a corporate/self-signed certificate (Data Center)')
3100
+ .option('--insecure-tls', 'Disable TLS certificate verification for JIRA requests only (last resort)')
3086
3101
  .action(async (opts) => {
3087
3102
  const { saveJiraConfig, resolveJiraCredentials, inferDeployment, jiraConfigPath, JiraClient, JiraAuthError, } = await Promise.resolve().then(() => __importStar(require('../jira')));
3088
3103
  const clack = await importESM('@clack/prompts');
@@ -3109,7 +3124,7 @@ function main() {
3109
3124
  }
3110
3125
  else {
3111
3126
  const baseUrl = opts.baseUrl ?? (await clack.text({
3112
- message: 'JIRA base URL',
3127
+ message: 'JIRA base URL (include the context path if your instance has one, e.g. https://host:8443/jira)',
3113
3128
  placeholder: 'https://acme.atlassian.net',
3114
3129
  validate: (v) => (v && v.trim() ? undefined : 'Required'),
3115
3130
  }));
@@ -3161,6 +3176,21 @@ function main() {
3161
3176
  config.pat = String(pat);
3162
3177
  }
3163
3178
  }
3179
+ // Corporate TLS opt-ins (REQ-JIRATLS-001) — flags apply on both the
3180
+ // flagged and interactive paths.
3181
+ if (opts.caCert) {
3182
+ const caPath = opts.caCert.trim();
3183
+ if (!fs.existsSync(caPath)) {
3184
+ clack.log.error(`CA certificate not found: ${caPath}`);
3185
+ process.exit(1);
3186
+ }
3187
+ config.caCertPath = caPath;
3188
+ }
3189
+ if (opts.insecureTls) {
3190
+ config.insecureTls = true;
3191
+ clack.log.warn('TLS certificate verification is DISABLED for JIRA requests. ' +
3192
+ 'Prefer --ca-cert with your corporate CA bundle when possible.');
3193
+ }
3164
3194
  saveJiraConfig(config);
3165
3195
  // NOTE: never print the credential — only the path.
3166
3196
  clack.log.success(`Saved credentials to ${jiraConfigPath()} (permissions 0600).`);