@profoundlogic/coderflow-server 0.4.7 → 0.4.9
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 +3 -1
- package/dist/README.md +3 -1
- package/dist/base-image/Dockerfile +5 -3
- package/dist/base-image/entrypoint.sh +76 -2
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/migrate-rbac.js +1 -0
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -0
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -0
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/scoped-rbac-migration-runner.js +1 -0
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +2 -1
- package/dist/playwright.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/scripts/migrate-to-scoped-rbac.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/docs/admin/environments.md +75 -0
- package/dist/web-ui/public/docs/admin/installation.md +9 -1
- package/dist/web-ui/public/environments.css +356 -0
- package/dist/web-ui/public/environments.html +316 -0
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.html +1 -2
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +7 -7
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +2 -1
|
@@ -263,6 +263,13 @@
|
|
|
263
263
|
Instructions
|
|
264
264
|
</button>
|
|
265
265
|
<!-- Files tab removed - content moved to Build tab -->
|
|
266
|
+
<button class="content-tab" data-tab="connections" role="tab">
|
|
267
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 4px; vertical-align: text-bottom;">
|
|
268
|
+
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
|
|
269
|
+
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
|
|
270
|
+
</svg>
|
|
271
|
+
Connections
|
|
272
|
+
</button>
|
|
266
273
|
<button class="content-tab" data-tab="env-vars" role="tab">
|
|
267
274
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 4px; vertical-align: text-bottom;">
|
|
268
275
|
<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>
|
|
@@ -468,6 +475,7 @@
|
|
|
468
475
|
</label>
|
|
469
476
|
</div>
|
|
470
477
|
<div class="card-body" id="server-config" hidden>
|
|
478
|
+
<div id="server-connection-banner" class="connection-banner" hidden></div>
|
|
471
479
|
<div class="form-single-column" style="max-width: none;">
|
|
472
480
|
<div class="form-row">
|
|
473
481
|
<label for="server-name">Server Name</label>
|
|
@@ -717,6 +725,27 @@
|
|
|
717
725
|
|
|
718
726
|
</div>
|
|
719
727
|
|
|
728
|
+
<!-- Connections Tab -->
|
|
729
|
+
<div id="tab-connections" class="tab-panel" role="tabpanel" hidden>
|
|
730
|
+
<div class="content-card">
|
|
731
|
+
<div class="card-header">
|
|
732
|
+
<h3>External Connections</h3>
|
|
733
|
+
<div class="card-header-actions">
|
|
734
|
+
<button class="btn-secondary btn-small" id="add-connection-btn">+ Add Connection</button>
|
|
735
|
+
</div>
|
|
736
|
+
</div>
|
|
737
|
+
<div class="card-body">
|
|
738
|
+
<div id="connections-list" class="connections-list">
|
|
739
|
+
<!-- Connections will be rendered here -->
|
|
740
|
+
</div>
|
|
741
|
+
<div id="connections-empty" class="connections-empty">
|
|
742
|
+
<p>No external connections configured.</p>
|
|
743
|
+
<p class="text-muted">Add connections to external servers (SQL Server, IBM i, SSH) to auto-configure containers with database access, SSH keys, and build tooling.</p>
|
|
744
|
+
</div>
|
|
745
|
+
</div>
|
|
746
|
+
</div>
|
|
747
|
+
</div>
|
|
748
|
+
|
|
720
749
|
<!-- Tests Tab -->
|
|
721
750
|
<div id="tab-tests" class="tab-panel" role="tabpanel" hidden>
|
|
722
751
|
<div class="content-card tests-card">
|
|
@@ -2030,6 +2059,293 @@
|
|
|
2030
2059
|
</div>
|
|
2031
2060
|
</div>
|
|
2032
2061
|
|
|
2062
|
+
<!-- Connection Add/Edit Modal -->
|
|
2063
|
+
<div id="connection-modal" class="modal" hidden>
|
|
2064
|
+
<div class="modal-content modal-large">
|
|
2065
|
+
<div class="modal-header">
|
|
2066
|
+
<h2 id="connection-modal-title">Add Connection</h2>
|
|
2067
|
+
<button type="button" class="modal-close" aria-label="Close">×</button>
|
|
2068
|
+
</div>
|
|
2069
|
+
<div class="modal-body">
|
|
2070
|
+
<div id="connection-modal-error" class="modal-error" hidden></div>
|
|
2071
|
+
<div class="form-single-column">
|
|
2072
|
+
<!-- Name -->
|
|
2073
|
+
<div class="form-row">
|
|
2074
|
+
<label for="connection-name">Connection Name <span class="required">*</span></label>
|
|
2075
|
+
<div class="input-with-toggle">
|
|
2076
|
+
<input type="text" id="connection-name" class="form-input code-font" placeholder="e.g., dev-sqlserver" required>
|
|
2077
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2078
|
+
</div>
|
|
2079
|
+
</div>
|
|
2080
|
+
<!-- Description -->
|
|
2081
|
+
<div class="form-row">
|
|
2082
|
+
<label for="connection-description">Description</label>
|
|
2083
|
+
<div class="input-with-toggle">
|
|
2084
|
+
<input type="text" id="connection-description" class="form-input" placeholder="e.g., Development SQL Server">
|
|
2085
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2086
|
+
</div>
|
|
2087
|
+
</div>
|
|
2088
|
+
<!-- Available For -->
|
|
2089
|
+
<div class="form-row">
|
|
2090
|
+
<label>Available For <span class="required">*</span></label>
|
|
2091
|
+
<div class="checkbox-group">
|
|
2092
|
+
<label class="checkbox-label"><input type="checkbox" id="connection-available-tasks" value="tasks" checked> Tasks</label>
|
|
2093
|
+
<label class="checkbox-label"><input type="checkbox" id="connection-available-deploy" value="deploy"> Deploy</label>
|
|
2094
|
+
</div>
|
|
2095
|
+
</div>
|
|
2096
|
+
<!-- Type (radio, disabled on edit) -->
|
|
2097
|
+
<div class="form-row" id="connection-type-row">
|
|
2098
|
+
<label>Type <span class="required">*</span></label>
|
|
2099
|
+
<div class="radio-group">
|
|
2100
|
+
<label class="radio-label"><input type="radio" name="connection-type" value="sqlserver" id="connection-type-sqlserver" checked><span>SQL Server</span></label>
|
|
2101
|
+
<label class="radio-label"><input type="radio" name="connection-type" value="ibmi" id="connection-type-ibmi"><span>IBM i</span></label>
|
|
2102
|
+
<label class="radio-label"><input type="radio" name="connection-type" value="ssh" id="connection-type-ssh"><span>SSH</span></label>
|
|
2103
|
+
</div>
|
|
2104
|
+
</div>
|
|
2105
|
+
<!-- Host -->
|
|
2106
|
+
<div class="form-row">
|
|
2107
|
+
<label for="connection-host">Host <span class="required">*</span></label>
|
|
2108
|
+
<div class="input-with-toggle">
|
|
2109
|
+
<input type="text" id="connection-host" class="form-input code-font" placeholder="myserver.mycompany.com">
|
|
2110
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2111
|
+
</div>
|
|
2112
|
+
<span class="form-hint">Enter the fully qualified host name, e.g. myserver.mycompany.com</span>
|
|
2113
|
+
</div>
|
|
2114
|
+
<!-- Verify DB server certificate -->
|
|
2115
|
+
<div class="form-row" id="connection-verify-cert-row">
|
|
2116
|
+
<label class="checkbox-label">
|
|
2117
|
+
<input type="checkbox" id="connection-verify-cert" checked>
|
|
2118
|
+
Verify DB server certificate
|
|
2119
|
+
</label>
|
|
2120
|
+
<span class="form-hint" id="connection-verify-cert-warning" hidden style="color: var(--color-warning, #e6a700);">Disabling certificate verification exposes the connection to man-in-the-middle attacks. Only uncheck this if you understand the security implications.</span>
|
|
2121
|
+
</div>
|
|
2122
|
+
<!-- Database (SQL Server only) -->
|
|
2123
|
+
<div class="form-row" id="connection-database-row">
|
|
2124
|
+
<label for="connection-database">Database <span class="required">*</span></label>
|
|
2125
|
+
<div class="input-with-toggle">
|
|
2126
|
+
<input type="text" id="connection-database" class="form-input code-font">
|
|
2127
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2128
|
+
</div>
|
|
2129
|
+
</div>
|
|
2130
|
+
<!-- User -->
|
|
2131
|
+
<div class="form-row">
|
|
2132
|
+
<label for="connection-user">User <span class="required">*</span></label>
|
|
2133
|
+
<div class="input-with-toggle">
|
|
2134
|
+
<input type="text" id="connection-user" class="form-input code-font">
|
|
2135
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2136
|
+
</div>
|
|
2137
|
+
</div>
|
|
2138
|
+
<!-- Password (SQL Server always; IBM i only when sql/interactive features checked) -->
|
|
2139
|
+
<div class="form-row" id="connection-password-row">
|
|
2140
|
+
<label for="connection-password">
|
|
2141
|
+
Password <span class="required">*</span>
|
|
2142
|
+
</label>
|
|
2143
|
+
<div class="input-with-toggle">
|
|
2144
|
+
<input type="password" id="connection-password" class="form-input code-font">
|
|
2145
|
+
<button type="button" class="btn-icon toggle-visibility" id="connection-password-toggle" title="Toggle visibility">
|
|
2146
|
+
<svg class="eye-open" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2147
|
+
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
|
|
2148
|
+
<circle cx="12" cy="12" r="3"></circle>
|
|
2149
|
+
</svg>
|
|
2150
|
+
<svg class="eye-closed" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: none;">
|
|
2151
|
+
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path>
|
|
2152
|
+
<line x1="1" y1="1" x2="23" y2="23"></line>
|
|
2153
|
+
</svg>
|
|
2154
|
+
</button>
|
|
2155
|
+
</div>
|
|
2156
|
+
</div>
|
|
2157
|
+
<!-- IBM i Profile Helper (shown for IBM i, after user/password) -->
|
|
2158
|
+
<div id="connection-ibmi-helper-row" hidden>
|
|
2159
|
+
<a href="#" id="connection-ibmi-helper-link" class="help-link">How to set up IBM i user profile</a>
|
|
2160
|
+
</div>
|
|
2161
|
+
<!-- IBM i Features (hidden for SQL Server and SSH) -->
|
|
2162
|
+
<div class="form-row" id="connection-features-row" hidden>
|
|
2163
|
+
<label>IBM i Features <span class="required">*</span></label>
|
|
2164
|
+
<div class="checkbox-group">
|
|
2165
|
+
<label class="checkbox-label"><input type="checkbox" id="feature-sql" value="sql" checked> SQL</label>
|
|
2166
|
+
<label class="checkbox-label"><input type="checkbox" id="feature-build" value="build"> Build objects</label>
|
|
2167
|
+
<label class="checkbox-label"><input type="checkbox" id="feature-ssh" value="ssh"> SSH</label>
|
|
2168
|
+
<label class="checkbox-label" hidden><input type="checkbox" id="feature-sync" value="sync"> Sync</label>
|
|
2169
|
+
<label class="checkbox-label"><input type="checkbox" id="feature-interactive" value="interactive"> Agent interactive sessions</label>
|
|
2170
|
+
</div>
|
|
2171
|
+
</div>
|
|
2172
|
+
<!-- Build Repo (shown when IBM i + Build) -->
|
|
2173
|
+
<div class="form-row" id="connection-build-repo-row" hidden>
|
|
2174
|
+
<label for="connection-build-repo">Build Repo <span class="required">*</span></label>
|
|
2175
|
+
<select id="connection-build-repo" class="form-input"></select>
|
|
2176
|
+
<span class="form-hint">Repository where codermake runs</span>
|
|
2177
|
+
</div>
|
|
2178
|
+
<!-- Build Directory (shown when IBM i + Build) -->
|
|
2179
|
+
<div class="form-row" id="connection-build-path-row" hidden>
|
|
2180
|
+
<label for="connection-build-path">Build Directory</label>
|
|
2181
|
+
<input type="text" id="connection-build-path" class="form-input code-font" placeholder="Optional subdirectory path within repo">
|
|
2182
|
+
<span class="form-hint">Subdirectory within the repo (leave blank for repo root)</span>
|
|
2183
|
+
</div>
|
|
2184
|
+
<!-- Build Library Prefix (shown when IBM i + Build + Tasks scope) -->
|
|
2185
|
+
<div class="form-row" id="connection-build-library-prefix-row" hidden>
|
|
2186
|
+
<label for="connection-build-library-prefix">Build Library Name Prefix <span class="required">*</span></label>
|
|
2187
|
+
<input type="text" id="connection-build-library-prefix" class="form-input code-font" maxlength="5" value="AITSK" style="width: 120px;">
|
|
2188
|
+
<span class="form-hint">Used as task build library name prefix</span>
|
|
2189
|
+
</div>
|
|
2190
|
+
<!-- SSH settings (when IBM i + SSH/Build feature, or SSH type) -->
|
|
2191
|
+
<div id="connection-ssh-settings" hidden>
|
|
2192
|
+
<div class="form-row">
|
|
2193
|
+
<label>SSH Private Key <span class="required">*</span></label>
|
|
2194
|
+
<div class="secret-value-group">
|
|
2195
|
+
<textarea id="connection-ssh-private-key" class="form-textarea code-font" rows="4" placeholder="Paste, import from file, or generate a keypair..."></textarea>
|
|
2196
|
+
<button type="button" class="btn-icon connection-ssh-key-toggle" title="Toggle visibility">
|
|
2197
|
+
<svg class="eye-open" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2198
|
+
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
|
|
2199
|
+
<circle cx="12" cy="12" r="3"></circle>
|
|
2200
|
+
</svg>
|
|
2201
|
+
<svg class="eye-closed" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: none;">
|
|
2202
|
+
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path>
|
|
2203
|
+
<line x1="1" y1="1" x2="23" y2="23"></line>
|
|
2204
|
+
</svg>
|
|
2205
|
+
</button>
|
|
2206
|
+
</div>
|
|
2207
|
+
<div class="textarea-actions">
|
|
2208
|
+
<button type="button" class="btn-secondary btn-small" id="connection-ssh-import-btn">Import from file...</button>
|
|
2209
|
+
<input type="file" id="connection-ssh-file-input" hidden>
|
|
2210
|
+
<button type="button" class="btn-secondary btn-small" id="connection-generate-keypair-btn">Generate Keypair</button>
|
|
2211
|
+
</div>
|
|
2212
|
+
</div>
|
|
2213
|
+
<div class="form-row">
|
|
2214
|
+
<label>SSH Public Key</label>
|
|
2215
|
+
<div class="secret-value-group">
|
|
2216
|
+
<textarea id="connection-ssh-public-key" class="form-textarea code-font" rows="4" placeholder="Paste, import from file, or generate a keypair..."></textarea>
|
|
2217
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2218
|
+
</div>
|
|
2219
|
+
<div class="textarea-actions">
|
|
2220
|
+
<button type="button" class="btn-secondary btn-small" id="connection-ssh-pubkey-import-btn">Import from file...</button>
|
|
2221
|
+
<input type="file" id="connection-ssh-pubkey-file-input" hidden>
|
|
2222
|
+
<div id="connection-install-key-row" hidden>
|
|
2223
|
+
<button type="button" class="btn-secondary btn-small" id="connection-install-key-btn">Install Public Key on Remote</button>
|
|
2224
|
+
</div>
|
|
2225
|
+
</div>
|
|
2226
|
+
</div>
|
|
2227
|
+
</div>
|
|
2228
|
+
<!-- PUI settings (when Interactive) -->
|
|
2229
|
+
<div id="connection-pui-settings" hidden>
|
|
2230
|
+
<div class="form-row">
|
|
2231
|
+
<label for="connection-pui-base-url">PUI Base URL <span class="required">*</span></label>
|
|
2232
|
+
<div class="input-with-toggle">
|
|
2233
|
+
<input type="text" id="connection-pui-base-url" class="form-input code-font" placeholder="https://myibmi.mycompany.com:8080">
|
|
2234
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2235
|
+
</div>
|
|
2236
|
+
<span class="form-hint">Enter the fully qualified URL, e.g. https://myibmi.mycompany.com:8080</span>
|
|
2237
|
+
</div>
|
|
2238
|
+
<div class="form-row">
|
|
2239
|
+
<label for="connection-pui-render-path">PUI Render Path</label>
|
|
2240
|
+
<div class="input-with-toggle">
|
|
2241
|
+
<input type="text" id="connection-pui-render-path" class="form-input code-font" placeholder="/profoundui/genie">
|
|
2242
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2243
|
+
</div>
|
|
2244
|
+
</div>
|
|
2245
|
+
<div class="form-row">
|
|
2246
|
+
<label for="connection-pui-launch-path">PUI Launch Path</label>
|
|
2247
|
+
<div class="input-with-toggle">
|
|
2248
|
+
<input type="text" id="connection-pui-launch-path" class="form-input code-font" placeholder="/profoundui/auth/genie">
|
|
2249
|
+
<div class="btn-icon" style="visibility: hidden;"></div>
|
|
2250
|
+
</div>
|
|
2251
|
+
</div>
|
|
2252
|
+
</div>
|
|
2253
|
+
<!-- Test buttons (edit mode only) -->
|
|
2254
|
+
<div class="form-row" id="connection-test-row" hidden>
|
|
2255
|
+
<div class="connection-test-actions">
|
|
2256
|
+
<button type="button" class="btn-secondary btn-small" id="connection-test-sql-btn" hidden style="white-space: nowrap">Test SQL</button>
|
|
2257
|
+
<button type="button" class="btn-secondary btn-small" id="connection-test-ssh-btn" hidden style="white-space: nowrap">Test SSH</button>
|
|
2258
|
+
<span id="connection-test-spinner" class="status-text" hidden>Testing...</span>
|
|
2259
|
+
</div>
|
|
2260
|
+
<div id="connection-test-result" class="connection-test-result" hidden></div>
|
|
2261
|
+
</div>
|
|
2262
|
+
</div>
|
|
2263
|
+
</div>
|
|
2264
|
+
<div class="modal-actions">
|
|
2265
|
+
<button type="button" class="btn-secondary" id="connection-modal-cancel-btn">Cancel</button>
|
|
2266
|
+
<button type="button" class="btn-primary" id="connection-modal-save-btn">Save Connection</button>
|
|
2267
|
+
</div>
|
|
2268
|
+
</div>
|
|
2269
|
+
</div>
|
|
2270
|
+
|
|
2271
|
+
<!-- Delete Connection Modal -->
|
|
2272
|
+
<div id="delete-connection-modal" class="modal" hidden>
|
|
2273
|
+
<div class="modal-content">
|
|
2274
|
+
<div class="modal-header">
|
|
2275
|
+
<h2>Delete Connection</h2>
|
|
2276
|
+
<button type="button" class="modal-close" aria-label="Close">×</button>
|
|
2277
|
+
</div>
|
|
2278
|
+
<div class="modal-body">
|
|
2279
|
+
<p>Are you sure you want to delete this connection?</p>
|
|
2280
|
+
<p><strong id="delete-connection-name"></strong></p>
|
|
2281
|
+
<p class="text-muted">Containers will no longer have access to this external server.</p>
|
|
2282
|
+
</div>
|
|
2283
|
+
<div class="modal-actions">
|
|
2284
|
+
<button type="button" class="btn-secondary" id="delete-connection-cancel-btn">Cancel</button>
|
|
2285
|
+
<button type="button" class="btn-danger" id="delete-connection-confirm-btn">Delete</button>
|
|
2286
|
+
</div>
|
|
2287
|
+
</div>
|
|
2288
|
+
</div>
|
|
2289
|
+
|
|
2290
|
+
<!-- Install Public Key Modal -->
|
|
2291
|
+
<div id="install-key-modal" class="modal" hidden>
|
|
2292
|
+
<div class="modal-content" style="max-width: 480px;">
|
|
2293
|
+
<div class="modal-header">
|
|
2294
|
+
<h2>Install Public Key on Remote</h2>
|
|
2295
|
+
<button type="button" class="modal-close" aria-label="Close">×</button>
|
|
2296
|
+
</div>
|
|
2297
|
+
<div class="modal-body">
|
|
2298
|
+
<p class="text-muted" style="margin-top: 0;">Enter the password for the remote host. It will only be used to install the public key and will not be saved.</p>
|
|
2299
|
+
<div class="form-row">
|
|
2300
|
+
<label for="install-key-password">Password <span class="required">*</span></label>
|
|
2301
|
+
<div class="input-with-toggle">
|
|
2302
|
+
<input type="password" id="install-key-password" class="form-input code-font">
|
|
2303
|
+
<button type="button" class="btn-icon toggle-visibility" id="install-key-password-toggle" title="Toggle visibility">
|
|
2304
|
+
<svg class="eye-open" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2305
|
+
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
|
|
2306
|
+
<circle cx="12" cy="12" r="3"></circle>
|
|
2307
|
+
</svg>
|
|
2308
|
+
<svg class="eye-closed" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: none;">
|
|
2309
|
+
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path>
|
|
2310
|
+
<line x1="1" y1="1" x2="23" y2="23"></line>
|
|
2311
|
+
</svg>
|
|
2312
|
+
</button>
|
|
2313
|
+
</div>
|
|
2314
|
+
</div>
|
|
2315
|
+
<div id="install-key-result" class="connection-test-result" hidden></div>
|
|
2316
|
+
</div>
|
|
2317
|
+
<div class="modal-actions">
|
|
2318
|
+
<button type="button" class="btn-secondary" id="install-key-cancel-btn">Cancel</button>
|
|
2319
|
+
<button type="button" class="btn-primary" id="install-key-confirm-btn">Install Key</button>
|
|
2320
|
+
</div>
|
|
2321
|
+
</div>
|
|
2322
|
+
</div>
|
|
2323
|
+
|
|
2324
|
+
<!-- IBM i Profile Setup Helper Dialog -->
|
|
2325
|
+
<div id="ibmi-helper-modal" class="modal" hidden>
|
|
2326
|
+
<div class="modal-content">
|
|
2327
|
+
<div class="modal-header">
|
|
2328
|
+
<h2>IBM i User Profile Setup</h2>
|
|
2329
|
+
<button type="button" class="modal-close" aria-label="Close">×</button>
|
|
2330
|
+
</div>
|
|
2331
|
+
<div class="modal-body">
|
|
2332
|
+
<p>Run the following CL commands on the IBM i system as a sys admin:</p>
|
|
2333
|
+
<div id="ibmi-helper-commands" class="code-block"></div>
|
|
2334
|
+
<div class="helper-notes">
|
|
2335
|
+
<p><strong>Notes:</strong></p>
|
|
2336
|
+
<ul>
|
|
2337
|
+
<li>Configure the user's JOBD or initial program to set the appropriate library list</li>
|
|
2338
|
+
<li>For interactive sessions, make sure that PUISETENV is called as or from the user's initial program</li>
|
|
2339
|
+
<li>SSH public key installation is handled separately via the connection UI</li>
|
|
2340
|
+
</ul>
|
|
2341
|
+
</div>
|
|
2342
|
+
</div>
|
|
2343
|
+
<div class="modal-actions">
|
|
2344
|
+
<button type="button" class="btn-secondary" id="ibmi-helper-close-btn">Close</button>
|
|
2345
|
+
</div>
|
|
2346
|
+
</div>
|
|
2347
|
+
</div>
|
|
2348
|
+
|
|
2033
2349
|
<!-- Profile Secret Configuration Modal -->
|
|
2034
2350
|
<div id="profile-secret-modal" class="modal" hidden>
|
|
2035
2351
|
<div class="modal-overlay"></div>
|