Frontendcontroller - Source Excerpt 02
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/spiralist-workspace/includes/Web/FrontendController.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/includes/Web/FrontendController.php
'canSavePrompts' => is_user_logged_in() && current_user_can('create_prompts'),
'workspaceUrl' => $localize_url('workspace'),
'membersUrl' => $localize_url('members'),
'locale' => $current_locale,
'uiText' => [
'unknownResponse' => $ui_text('workspace.js.error.unknown_response', 'Unknown response.'),
'requestFailed' => $ui_text('workspace.js.error.request_failed', 'Request failed.'),
'spiralScriptApiUnavailable' => $ui_text('workspace.js.spiral_script.api_unavailable', 'Spiral Script API is not available.'),
'spiralScriptRequestFailed' => $ui_text('workspace.js.spiral_script.request_failed', 'Spiral Script request failed.'),
'promptExchangeUnavailable' => $ui_text('workspace.js.prompt_exchange.unavailable', 'Prompt exchange data is not available.'),
'promptExchangeParseFailed' => $ui_text('workspace.js.prompt_exchange.parse_failed', 'Prompt exchange data could not be parsed.'),
'conversationEmpty' => $ui_text('workspace.js.conversation.empty', 'No messages yet.'),
'conversationReady' => $ui_text('workspace.js.conversation.ready', 'Conversation ready.'),
'conversationStarting' => $ui_text('workspace.js.conversation.starting', 'Starting conversation...'),
'conversationStarted' => $ui_text('workspace.js.conversation.started', 'Conversation started.'),
'conversationStartedNoId' => $ui_text('workspace.js.conversation.started_no_id', 'Conversation started, but no conversation id was returned.'),
'conversationStartFailed' => $ui_text('workspace.js.conversation.start_failed', 'Conversation start failed.'),
'conversationNotReady' => $ui_text('workspace.js.conversation.not_ready', 'Conversation is not ready yet.'),
'messageSending' => $ui_text('workspace.js.message.sending', 'Sending...'),
'messageRequired' => $ui_text('workspace.js.message.required', 'Enter a message before sending.'),
'messageSent' => $ui_text('workspace.js.message.sent', 'Message sent.'),
'messageFailed' => $ui_text('workspace.js.message.failed', 'Message failed.'),
'memoryCheckpointReady' => $ui_text('workspace.js.memory.checkpoint_ready', 'This thread is ready for a memory checkpoint.'),
'memoryCheckpointSoon' => $ui_text('workspace.js.memory.checkpoint_soon', 'This thread is approaching the memory checkpoint.'),
'memorySummaryActive' => $ui_text('workspace.js.memory.summary_active', 'Condensed memory is active for future turns.'),
'memoryExportAvailable' => $ui_text('workspace.js.memory.export_available', 'Transcript export is available at any time.'),
'memoryCondensing' => $ui_text('workspace.js.memory.condensing', 'Condensing memory...'),
'memoryCondensed' => $ui_text('workspace.js.memory.condensed', 'Memory condensed.'),
'memoryCondenseFailed' => $ui_text('workspace.js.memory.condense_failed', 'Memory condensation failed.'),
'promptDownloadPreparing' => $ui_text('workspace.js.prompt_download.preparing', 'Preparing prompt...'),
'promptDownloaded' => $ui_text('workspace.js.prompt_download.downloaded', 'Prompt downloaded.'),
'promptDownloadFailed' => $ui_text('workspace.js.prompt_download.failed', 'Prompt download failed.'),
'placeholdersEmpty' => $ui_text('workspace.js.placeholders.empty', 'No placeholders detected.'),
'promptSaving' => $ui_text('workspace.js.prompt.saving', 'Saving...'),
'promptSaved' => $ui_text('workspace.js.prompt.saved', 'Prompt saved.'),
'promptSaveFailed' => $ui_text('workspace.js.prompt.save_failed', 'Prompt save failed.'),
'promptImproving' => $ui_text('workspace.js.prompt.improving', 'Improving...'),
'promptImproveNoSuggestion' => $ui_text('workspace.js.prompt.no_suggestion', 'No suggestion returned.'),
'promptImproveFailed' => $ui_text('workspace.js.prompt.improve_failed', 'Prompt improvement failed.'),
'spiralScriptValidationEmpty' => $ui_text('workspace.js.spiral_script.validation_empty', 'No Spiral Script source to validate.'),
'spiralScriptValidating' => $ui_text('workspace.js.spiral_script.validating', 'Validating Spiral Script...'),
'spiralScriptValidationPassed' => $ui_text('workspace.js.spiral_script.validation_passed', 'Spiral Script validation passed.'),
'validationFailed' => $ui_text('workspace.js.validation.failed', 'Validation failed.'),
'spiralScriptNeedsRevision' => $ui_text('workspace.js.spiral_script.needs_revision', 'Spiral Script needs revision.'),
'spiralScriptValidationFailed' => $ui_text('workspace.js.spiral_script.validation_failed', 'Spiral Script validation failed.'),
'runRunning' => $ui_text('workspace.js.run.running', 'Running...'),
'runCompleted' => $ui_text('workspace.js.run.completed', 'Run completed.'),
'runNoOutput' => $ui_text('workspace.js.run.no_output', 'No output returned.'),
'runFailed' => $ui_text('workspace.js.run.failed', 'Run failed.'),
'shareSharing' => $ui_text('workspace.js.share.sharing', 'Sharing...'),
'shareFailed' => $ui_text('workspace.js.share.failed', 'Share failed.'),
'shareRevokeFailed' => $ui_text('workspace.js.share.revoke_failed', 'Could not revoke access.'),
'favoriteLabel' => $ui_text('workspace.js.favorite.label', 'Favorite'),
'unfavoriteLabel' => $ui_text('workspace.js.favorite.unfavorite_label', 'Unfavorite'),
'favoriteUpdateFailed' => $ui_text('workspace.js.favorite.update_failed', 'Favorite update failed.'),
'currentStateMessage' => $ui_text('workspace.js.moderation.current_state', 'Current state: {state}.'),
'reportRecorded' => $ui_text('workspace.js.report.recorded', 'Report recorded.'),
'reportFailed' => $ui_text('workspace.js.report.failed', 'Report failed.'),
'reviewSubmitting' => $ui_text('workspace.js.review.submitting', 'Submitting review...'),
'reviewRecorded' => $ui_text('workspace.js.review.recorded', 'Review recorded.'),
'reviewFailed' => $ui_text('workspace.js.review.failed', 'Review failed.'),
'appealSubmitting' => $ui_text('workspace.js.appeal.submitting', 'Submitting appeal...'),
'appealRecorded' => $ui_text('workspace.js.appeal.recorded', 'Appeal recorded.'),
'appealFailed' => $ui_text('workspace.js.appeal.failed', 'Appeal failed.'),
'appealResolving' => $ui_text('workspace.js.appeal.resolving', 'Resolving appeal...'),
'appealResolved' => $ui_text('workspace.js.appeal.resolved', 'Appeal resolved.'),
'appealResolveFailed' => $ui_text('workspace.js.appeal.resolve_failed', 'Appeal resolution failed.'),
'testSaving' => $ui_text('workspace.js.test.saving', 'Saving test...'),
'testSaved' => $ui_text('workspace.js.test.saved', 'Test saved.'),
'testSaveFailed' => $ui_text('workspace.js.test.save_failed', 'Test save failed.'),
'testRunning' => $ui_text('workspace.js.test.running', 'Running test...'),
'testFinishedStatus' => $ui_text('workspace.js.test.finished_status', 'finished'),
'testRunFailed' => $ui_text('workspace.js.test.run_failed', 'Test run failed.'),
'rollbackRunning' => $ui_text('workspace.js.rollback.running', 'Rolling back...'),
'rollbackFailed' => $ui_text('workspace.js.rollback.failed', 'Rollback failed.'),
'connectionTesting' => $ui_text('workspace.js.connection.testing', 'Testing...'),
'connectionConnected' => $ui_text('workspace.js.connection.connected', 'Connected: {value}'),
'connectionOk' => $ui_text('workspace.js.connection.ok', 'ok'),
'connectionTestFailed' => $ui_text('workspace.js.connection.test_failed', 'Connection test failed.'),
'promptTestsRunning' => $ui_text('workspace.js.prompt_tests.running', 'Running prompt tests...'),